Если надо удалить из строки пробелы, обычно используют функции Trim:
- Trim — удаление пробелов в начале строки и в конце
- TrimLeft — удаление пробела в начале строки
- TrimRight — удаление пробелов в конце строки
var s: string; begin s := ' 1234567 '; ShowMessage(Trim(s)); // s = '1234567' ShowMessage(TrimLeft(s)); // s = '1234567 ' ShowMessage(TrimRight(s)); // s = ' 1234567' end;
Но бывают ситуации когда данные функции бесполезны, например пробел находится в середине строки и их несколько
s1 := ‘1 234’;
s2 := ‘1 234 567’;
Удаление пробелов в середине строки
Для таких случаев можно воспользоваться StringReplace или AnsiReplaceStr
var s: string; begin s := '1 234 567'; s := StringReplace(s , ' ','', [rfReplaceAll, rfIgnoreCase]); end;
А тут начинается самое интересное, вы вроде задали старое значение и новое, но замена пробела так и не сработала, почему?
Да потому что код символа пробела другой. Тогда как определить код символа пробела и удалить его?
В моем случае код символа пробела был 160, я него определил через ord.
var s: string; begin s := '1 234 567'; s := StringReplace(s, Chr(160), '', [rfReplaceAll, rfIgnoreCase]); end;