Это новый вопрос в тему:StringReplace не работает, как ожидалось
How do I store and load a list of key-value pairs in a string?
я пришел к следующему коду:
procedure TForm1.BotaoLimpaClick(Sender: TObject);
var
ListaSubstituicoes, Atual: String;
ListaLimpeza, Pares: TStringList;
i: Integer; //('O' , ' .' , '.' , '/' , '-');
begin
ListaSubstituicoes := '|O| = |0| , | .| = |.| , . ,/, -';
TextoCompleto := Trim(EditTexto.Text);
ListaLimpeza := TStringList.Create;
Pares := TStringList.Create;
ExtractStrings([','],[], PChar(ListaSubstituicoes), ListaLimpeza);
for i := 0 to (ListaLimpeza.Count - 1) do
begin
Atual := ListaLimpeza[i];
Atual := Trim(Atual);
if Pos('=', Atual) = 0 then
begin
TextoCompleto :=
StringReplace(TextoCompleto, Atual, '', [rfReplaceAll, rfIgnoreCase]);
Continue;
end;
Pares.Clear;
ExtractStrings(['='],[], PChar(Atual), Pares);
Pares.Text :=
StringReplace(Pares.Text, '|', '', [rfReplaceAll, rfIgnoreCase]);
//Pares[1] := StringReplace(Pares[1], '|', '', [rfReplaceAll, rfIgnoreCase]);
TextoCompleto :=
StringReplace(TextoCompleto, Pares[0], Pares[1], [rfReplaceAll, rfIgnoreCase]);
end;
это сводит меня с ума Тхо. Когда я применяю его к следующему:
75691 0,30698 02053447138 05764,100011 5 572500000382o0
это просто не работает! Он не удаляет пробел '.306' и не заменяет o 0 в конце инструкции. Почему это? Я считаю, что это связано с тем, что StringReplace работает неправильно, возможно, это не относится к «пробелам», каким-либо подсказкам?
Pares [0] правильно получает значение «O», а Pares [1] правильно получает «0». Я проверил со следами. Но странно, TextoCompleto := StringReplace(TextoCompleto, Pares[0], Pares[1], [rfReplaceAll, rfIgnoreCase]);
не производит желаемого результата замены 572500000382o0
с 57250000038200
Слишком много кода здесь. Отверните его до одного вызова 'StringReplace'. Используйте литералы для двух параметров строки. –
Вы уже использовали отладчик? Вот как все остальные расследуют такие проблемы. Убедитесь, что вы передаете правильные значения функции, которую вы обвиняете в неправильном функционировании. Используйте окно просмотра и средство оценки выражения всплывающей подсказки. –
Я сделал это. Именно так я пришел к выводу, что это проблема с StringReplace. –