Tôi có một cột cơ sở dữ liệu có thể chỉ lấy 40 ký tự của một chuỗi. Vì vậy, khi độ dài của chuỗi lớn hơn 40 ký tự, nó cho tôi lỗi. Làm thế nào tôi có thể cắt/cắt chuỗi thành 40 ký tự trong delphi?Làm thế nào để cắt một chuỗi thành một số mong muốn trong delphi?
Trả lời
var
s: string;
begin
s := 'This is a string containing a lot of characters.'
s := Copy(s, 1, 40);
// Now s is 'This is a string containing a lot of cha'
More ưa thích sẽ có thêm ellipsis nếu một chuỗi được cắt ngắn, để cho biết điều này rõ ràng hơn:
function StrMaxLen(const S: string; MaxLen: integer): string;
var
i: Integer;
begin
result := S;
if Length(result) <= MaxLen then Exit;
SetLength(result, MaxLen);
for i := MaxLen downto MaxLen - 2 do
result[i] := '.';
end;
var
s: string;
begin
s := 'This is a string containing a lot of characters.'
s := StrMaxLen(S, 40)
// Now s is 'This is a string containing a lot of ...'
Hoặc, cho tất cả những người yêu thích Unicode, bạn có thể giữ thêm hai nhân vật ban đầu bằng đơn nhân vật ellipsis ... (U + 2026: NGANG ellipsis):
function StrMaxLen(const S: string; MaxLen: integer): string;
var
i: Integer;
begin
result := S;
if Length(result) <= MaxLen then Exit;
SetLength(result, MaxLen);
result[MaxLen] := '…';
end;
var
s: string;
begin
s := 'This is a string containing a lot of characters.'
s := StrMaxLen(S, 40)
// Now s is 'This is a string containing a lot of ch…'
Nhưng sau đó bạn phải là số dương rằng tất cả người dùng của bạn và người thân của họ hỗ trợ nhân vật hiếm này.
Tôi sẽ đề nghị sử dụng ký tự dấu chấm lửng thích hợp ở cuối cho điều này, do đó giữ hai ký tự bổ sung trong chuỗi. – mj2008
@ mj2008: Đã thêm tùy chọn đó. –
nhân vật cũng là hex 85 trong bộ ký tự ANSI (tôi đã sử dụng nó trong Delphi trong nhiều năm). Rõ ràng bất cứ ai sử dụng nó nên đảm bảo rằng nó là hợp lệ trong trang mã của họ hoặc bất cứ điều gì. – mj2008
var s : string;
begin
s := 'your string with more than 40 characters...';
s := LeftStr(s, 40);
Bạn cần 'StrUtils' cho điều này. –
vâng, tất nhiên bạn nói đúng. bạn phải thêm StrUtils. –
Tôi tự hỏi, điều này có nhanh hơn phương pháp 'SetLength' hoặc' Copy' không? – Wodzu
Bạn có thể sử dụng SetLength
cho việc làm này:
SetLength(s, Min(Length(s), 40));
Tôi vừa thêm nó. (Unadded rằng khi tôi nhìn thấy câu trả lời của bạn.) –
Đây là cách tiếp cận tốt nhất, hiệu suất-khôn ngoan, nếu bạn làm việc với các chuỗi rất dài (nhiều MB) hoặc rất nhiều chuỗi (hàng ngàn mỗi giây hoặc lâu hơn). –
Tôi nghĩ rằng đây là hiệu suất tiếp cận tốt nhất và mã hóa khôn ngoan. –
- 1. Delphi - làm thế nào để cắt một bitmap "tại chỗ"?
- 2. Làm thế nào để chuyển một biến chuỗi thành một hàm mong đợi một PChar?
- 3. Làm thế nào để cắt bớt một chuỗi để phù hợp trong một container?
- 4. Làm thế nào để rò rỉ một chuỗi trong Delphi
- 5. Trong kịch bản shell bash làm thế nào để chuyển đổi một chuỗi thành một số
- 6. Làm thế nào để impliment một tài sản stringlist trong một thành phần delphi tùy chỉnh?
- 7. Làm thế nào để chuyển đổi một số nguyên thành một chuỗi một cách dễ dàng?
- 8. Làm thế nào để chuyển đổi một chuỗi các số thành một dãy số?
- 9. làm thế nào để cắt cuối n byte của một chuỗi trong bash chuỗi choping?
- 10. Làm thế nào để chuyển đổi một chuỗi thành một hằng số trong Ruby?
- 11. Làm thế nào để chuyển đổi một số ("") thành Không có trong một dòng?
- 12. Làm thế nào để chuyển đổi một chuỗi đại diện của một số thành một số trong coldfusion?
- 13. Làm thế nào để chuyển đổi chuỗi số thành số nguyên trong một danh sách?
- 14. Làm thế nào để cắt một chuỗi sử dụng một delimiter
- 15. Làm thế nào để cắt chuỗi StringBuilder?
- 16. Làm thế nào để "cắt" một std_logic_vector trong VHDL?
- 17. cắt một chuỗi thành nhiều dòng trong bash
- 18. Làm thế nào để cắt một hình ảnh trong Android?
- 19. Làm thế nào để cắt ngắn chuỗi UTF8 trong PHP?
- 20. Bash: Làm thế nào để chuyển đổi một số thành một chuỗi tháng?
- 21. Làm thế nào để chuyển đổi một chuỗi số clojure thành các số nguyên riêng biệt?
- 22. Matlab, làm thế nào để chuyển đổi một chuỗi các số nguyên thành một vectơ?
- 23. Làm thế nào để cắt ngắn một chuỗi với độ dài cụ thể trong perl?
- 24. Sử dụng imagemagick làm thế nào tôi có thể cắt một hình ảnh thành một số hình ảnh riêng biệt?
- 25. Trong clojure, làm thế nào để viết một hàm áp dụng một số thay thế chuỗi?
- 26. Trợ giúp jQuery .each, tôi muốn cắt() tất cả các chuỗi trong một mảng
- 27. Làm thế nào tôi có thể vượt qua một chuỗi Delphi để một Prism DLL?
- 28. Làm thế nào để chuyển đổi một chuỗi số 18 chữ số thành BigInteger?
- 29. Làm thế nào để cắt một NSArray trong Objective-C?
- 30. Làm thế nào để cắt một hình ảnh trong vb.net?
là phần về chiều dài cột DB thực sự liên quan ở đây? vì nếu bạn có thể có một số cách tiếp cận ở đây, ví dụ thiết lập kích thước trường sẽ cắt xén chuỗi, hoặc sử dụng một hàm chuỗi CAST/khác trong truy vấn ... (Tôi sẽ suy nghĩ về cách cải thiện thiết kế DB của mình trong trường hợp này). – kobik