分裂为“,”但不是“/”

时间:2014-10-10 14:06:21

标签: c# arrays regex string split

问题:如何编写表达式来分割','但不是'/,'的字符串?稍后我会想用'/,'替换', '

详细...

分隔符','

跳过字符'/'

示例输入"Mister,Bill,is,made,of/,clay"

我想将此输入拆分为数组:{"Mister", "Bill", "is", "made", "of, clay"}

我知道如何使用char prev, cur;和一些索引器执行此操作,但这似乎是测试版。

Java Regex具有拆分功能,但我不知道如何在C#中复制此行为。

注意:这不是一个重复的问题,这是同一个问题,但是对于另一种语言。

5 个答案:

答案 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);

之后,您可以替换/,并继续操作