问题:如何编写表达式来分割','
但不是'/,'
的字符串?稍后我会想用'/,'
替换', '
。
详细...
分隔符:','
跳过字符:'/'
示例输入:"Mister,Bill,is,made,of/,clay"
我想将此输入拆分为数组:{"Mister", "Bill", "is", "made", "of, clay"}
我知道如何使用char prev, cur;
和一些索引器执行此操作,但这似乎是测试版。
Java Regex具有拆分功能,但我不知道如何在C#中复制此行为。
注意:这不是一个重复的问题,这是同一个问题,但是对于另一种语言。
答案 0 :(得分:10)
我相信您正在寻找negative lookbehind:
var regex = new Regex("(?<!/),");
var result = regex.Split(str);
这会将str
分割为所有逗号前面没有斜杠的逗号。如果你想在字符串中保留'/,'
,那么这对你有用。
由于您说要分割字符串以及稍后将'/,'
替换为', '
,因此您需要先执行上述那么你可以迭代结果并替换字符串,如下所示:
var replacedResult = result.Select(s => s.Replace("/,", ", ");
答案 1 :(得分:3)
string s = "Mister,Bill,is,made,of/,clay";
var arr = s.Replace("/,"," ").Split(',');
结果:{"Mister", "Bill", "is", "made", "of clay"}
答案 2 :(得分:2)
使用正则表达式:
var result = Regex.Split("Mister,Bill,is,made,of/,clay", "(?<=[^/]),");
答案 3 :(得分:1)
只需使用“替换”即可删除字符串中的逗号:
s.Replace("/,", "//").Split(',').Select(x => x.Replace("//", ","));
答案 4 :(得分:0)
您可以在c#
中使用它string regex = @"(?:[^\/]),";
var match = Regex.Split("Mister,Bill,is,made,of/,clay", regex, RegexOptions.IgnoreCase);
之后,您可以替换/,
并继续操作