Ho una colonna di database che può richiedere solo 40 caratteri di una stringa. Quindi, quando la lunghezza della stringa è maggiore di 40 caratteri, mi dà errore. Come posso tagliare/tagliare la stringa a 40 caratteri in delphi?Come tagliare una stringa ad un numero desiderato in delphi?
risposta
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'
più fantasia sarebbe quella di aggiungere puntini di sospensione se una stringa viene troncato, per indicare più chiaramente:
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 ...'
Oppure, per tutti gli amanti Unicode, è possibile mantenere altri due personaggi originali utilizzando la singolo carattere puntini di sospensione ... (U + 2026: ORIZZONTALE 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…'
Ma allora si deve essere positivo il fatto che tutti gli utenti ed i loro parenti sostengono questo personaggio non comune.
Suggerirei di utilizzare il carattere di ellissi appropriato all'estremità per questo, mantenendo così due caratteri aggiuntivi nella stringa. – mj2008
@ mj2008: aggiunta questa opzione. –
il carattere è anche esadecimale 85 nei set di caratteri ANSI (l'ho usato in Delphi per molti anni). Ovviamente chiunque lo usi dovrebbe assicurarsi che sia valido nella propria pagina di codice o altro. – mj2008
var s : string;
begin
s := 'your string with more than 40 characters...';
s := LeftStr(s, 40);
Hai bisogno di 'StrUtils' per Questo. –
sì, certo che hai ragione. devi aggiungere StrUtils. –
Mi chiedo, è più veloce dell'approccio 'SetLength' o' Copy'? – Wodzu
È possibile utilizzare SetLength
per questo lavoro:
SetLength(s, Min(Length(s), 40));
L'ho appena aggiunto. (Non aggiustato che quando ho visto la tua risposta.) –
Questo è l'approccio migliore, in termini di prestazioni, se lavori con stringhe molto lunghe (molti MB) o molte stringhe (migliaia al secondo circa). –
Penso che questa sia la migliore prestazione di approccio e di codifica. –
- 1. Tagliare una stringa Java a un numero di carattere
- 2. Come tagliare una stringa utilizzando un delimitatore
- 3. Tagliare una stringa in C
- 4. Come posso tagliare una stringa in C?
- 5. Python - Come tagliare una stringa in Python?
- 6. tagliare parte di una stringa
- 7. Tagliare una stringa dopo una determinata frase?
- 8. Come salvare una stringa in un file .txt in Delphi?
- 9. Come faccio a tagliare() una stringa in angularjs?
- 10. Come posso tagliare la sottostringa da una stringa in tcl
- 11. php come tagliare ogni riga in un heredoc (stringa lunga)
- 12. Come troncare una stringa in PHP alla frase più vicina ad un certo numero di caratteri?
- 13. Tagliare una stringa con un Start & Endindex noto
- 14. tagliare una stringa in più righe in bash
- 15. Come tagliare le parole specificate dalla stringa
- 16. Come controllare se una stringa contiene una sottostringa in Delphi
- 17. Come tagliare la stringa di StringBuilder?
- 18. Come tagliare l'ultimo campo da una stringa shell
- 19. Quick padding di una stringa in Delphi
- 20. Il modo migliore per tagliare gli spazi in una stringa
- 21. Come convertire una stringa in numero in un modello freemarker
- 22. Come trovo un numero in una stringa in Python?
- 23. Come tagliare un deque?
- 24. script di shell: Come tagliare parte di una stringa
- 25. Tagliare un quadrato traslucido in una trama
- 26. Come eseguire una stringa a riga multipla in Delphi/Pascal
- 27. Come tagliare la stringa usando node.js?
- 28. Come tagliare la stringa con Entity Framework?
- 29. Converti un numero intero in una stringa firmata in Ruby
- 30. Come convertire un numero MAC in una stringa MAC?
è la parte su DB lunghezza della colonna davvero rilevante qui? perché se così fosse si possono avere diversi approcci qui, per esempio l'impostazione delle dimensioni del campo troncerà la stringa, o l'uso di una stringa CAST/altre funzioni SQL nella query stessa ... (Vorrei ripensare a come migliorare la progettazione del mio DB in questo caso). – kobik