C# 自定义解析字符串

C# 自定义解析字符串,c#,string,split,string-parsing,C#,String,Split,String Parsing,在解析FTX(自由文本)字符串时,我需要使用+作为分隔符来拆分它,但前提是它前面没有转义字符(例如,?)。 所以这个字符串nika?+mary=love+sandra?+alex=love应该被解析为两个字符串:nika+mary=love和sandra+alex=love。 使用String.Split('+')显然是不够的。我能做到吗 在我看来,一种方法是用一些唯一的字符(或一系列字符)替换出现的?+,比如说,@,使用“+”作为分隔符进行拆分,然后将@替换回+,但这在我能想到的任何可能的情况

在解析FTX(自由文本)字符串时,我需要使用
+
作为分隔符来拆分它,但前提是它前面没有转义字符(例如,
)。 所以这个字符串
nika?+mary=love+sandra?+alex=love
应该被解析为两个字符串:
nika+mary=love
sandra+alex=love
。 使用
String.Split('+')
显然是不够的。我能做到吗

在我看来,一种方法是用一些唯一的字符(或一系列字符)替换出现的
?+
,比如说,
@
,使用“+”作为分隔符进行拆分,然后将
@
替换回
+
,但这在我能想到的任何可能的情况下都是不可靠和错误的


仅在与
+
组合使用时用作转义字符,在任何其他情况下,它都被视为正则字符。

拆分它的可怕正则表达式:

string str = "nika ?+ marry = love??+sandra ???+ alex = love";
string[] splitted = Regex.Split(str, @"(?<=(?:^|[^?])(?:\?\?)*)\+");
string str=“nika?+marry=love???+sandra???+alex=love”;
string[]splitted=Regex.Split(str,@“(?)?
输出

'nika + marry = love'
'sandra + alex = love'

请参见

您可以尝试使用正则表达式。您能更具体一点吗?如果单词/句子中存在
“?+”
,会发生什么?然后是替换
的逻辑+"
不起作用。@shree.pat18如果
可以用
??
进行转义,这样
??+
就不会被拆分,这会变得很复杂。@xanatos是的,是的。OP需要给出一些关于这方面可能的变化的想法。如果字符串以
?+
结尾怎么办?我不知道,现在我们不应该返回任何内容或空字符串。您的不返回任何内容,mine返回空字符串。对于可怕的正则表达式也是+1!
'nika + marry = love'
'sandra + alex = love'