これは、このトピックの新しい質問です。
キーと値のペアのリストを文字列に保存して読み込むにはどうすればよいですか?
私は次のコードに来ました:
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 .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