如何将包含'='的字符串添加到stringlist中?

Dyl*_*lan 0 c# java delphi

正则表达式用于解析包含"="的文本,并将拆分字符串放入类似于键值对的字符串列表中.

但如果value包含'=',则不能使用list.add(key3 +'='+'number = 10');

key1 this's done
key2 that costs 10 dollars
key3 number=10 // invalid data, error prompt.
...
Run Code Online (Sandbox Code Playgroud)

怎么解决?谢谢.

编辑:

谢谢大家的帮助.

如果我必须在密钥中添加包含'='的字符串,我该如何解决?

例如,要解析的文本可能是这样的:

maleConsumer=john 1
maleConsumer=eric 2
femaleConsumer=mary 2
maleConsumer=john 8
...
Run Code Online (Sandbox Code Playgroud)

我使用regex reg ='\ b\S +\b'解析文本并将maleconsumer = john放入stringlist的键中,这样在stringlist中,john的记录将是:

maleConsumer=john 9 // maleconsumer=john is key, 9 is value
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我该怎么办?

再次感谢大家的帮助.

Mik*_*son 6

这在Delphi中运行良好

var
    sl: TStringList;
begin
    sl := TStringList.Create;
    try
        sl.Add('key1=this''s done');
        sl.Add('key2=that costs 10 dollars');
        sl.Add('key3=number=10');
        ShowMessage(sl.Values['key3']); // Displays number=10
    finally
        sl.Free;
    end;
end;
Run Code Online (Sandbox Code Playgroud)

这更好,仍然有效

var
    sl: TStringList;
begin
    sl := TStringList.Create;
    try
        sl.Values['key1'] := 'this''s done';
        sl.Values['key2'] := 'that costs 10 dollars';
        sl.Values['key3'] := 'number=10';
        ShowMessage(sl.Values['key3']); // Displays number=10
    finally
        sl.Free;
    end;
end;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您可以使用TStringList.NameValueSeparator指定分隔符

使用NameValueSeparator允许= in key

var
    sl: TStringList;
begin
    sl := TStringList.Create;
    try
        // Select a separater you are sure will never be used
        sl.NameValueSeparator := '|';

        sl.Values['maleConsumer=john'] := '1';
        sl.Values['maleConsumer=eric'] := '2';
        sl.Values['femaleConsumer=mary'] := '2';
        sl.Values['maleConsumer=john'] := '8';

        ShowMessage(sl.Values['maleConsumer=john']); // Displays 8
    finally
        sl.Free;
    end;
end;
Run Code Online (Sandbox Code Playgroud)