E
E
Evgeny Ivanov2016-11-01 13:01:45
Delphi
Evgeny Ivanov, 2016-11-01 13:01:45

How to remove spaces from a string?

The program receives the content of the web page (response from the server) and saves it to a file.
Next, you need to parse (which I do) and remove all spaces from the string.
Convert a number, for example from 10,000 to 10,000.
For some unknown reason, this does not work. How to do it?

//Запись в файл
procedure get_https_file_content_to_file(https_url:string);
var
IdHTTP1: TIdHTTP;
IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocket;
server_response:ansistring;
text_file: textfile;
begin
IdHTTP1.HandleRedirects:=true;
IdHTTP1.RedirectMaximum:=15;
IdHTTP1:=TIdHTTP.Create(nil);
IdSSLIOHandlerSocket1:=TIdSSLIOHandlerSocket.Create(IdHTTP1);
IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv1;
IdHTTP1.IOHandler:=IdSSLIOHandlerSocket1;
server_response:=utf8toansi(IdHTTP1.Get(https_url)); //Мы получили в utf8, переводим это в Ansi
//Нам нужен файл в кодировке Ansi т.к. часть функций работают с этой кодировкой
assignfile(text_file, ExtractFilePath(Application.ExeName)+'data\pharsed_data.txt');
rewrite(text_file);
write(text_file, server_response);
Closefile(text_file);
end;

//Далее вызов функции и запись данных в файл. Файл в кодировке ansi (открывал notepad++)
//Теперь мне нужно осуществить парсинг

//Часть кода
//string_from_file:ansistring; damage:ansistring;
file_path:=ExtractFilePath(Application.ExeName)+'data\pharsed_data.txt';
AssignFile(text_file,file_path);
Reset(text_file);
while not EOF(text_file) do
begin
readln(text_file, string_from_file);

//Функция поиска - мы успешно нашли этот текст
if  CountPos('Урон', string_from_file)>0  then
begin
damage:=get_stext('Урон', 'Конец_урона', string_from_file); //Успешно получили текст между словами Урон Конец_урона
main_form.Memo1.Lines.Add(damage); //В поле мемо видим текст 10 000

//ТУТ НАДО УДАЛИТЬ ИЗ СТРОКИ damage все пробелы т.е. хочу получить 10000
//damage:=StringReplace(damage, ' ', '', [rfReplaceAll]);
damage:=AnsiReplaceStr(damage, ' ', '');
//damage:=StringReplace(damage,' ','',[rfReplaceAll, rfIgnoreCase]);
//damage:=AnsiReplaceStr(damage,' ','',[rfReplaceAll, rfIgnoreCase]);
main_form.Memo1.Lines.Add(damage); //В поле мемо снова 10 000 Странно...

//А ЕСЛИ ТАК
damage:=' 10 000';
damage:=AnsiReplaceStr(damage, ' ', '');
main_form.Memo1.Lines.Add(damage); //В поле мемо  10000 - работает
//Почему не сработало с чтением из файла?
end;
end;
CloseFile(text_file);

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Alexey, 2016-11-01
@logpol32

With a high probability, you do not have a space there, but either  some other non-printable character like "non-breaking space".
If you give a link to the page - I'll tell you more precisely what's there.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question