C# 将字符串拆分为包含在括号中的数组
我的项目中有以下字符串:C# 将字符串拆分为包含在括号中的数组,c#,regex,string,split,C#,Regex,String,Split,我的项目中有以下字符串: ((1,01/31/2015)(1,文件路径)(1,名称)(1,代码)(1,字符串)(1,) 我想把这个字符串分成几个部分,在这些部分中我可以获得捕获括号中的信息(例如1,Filepath或(1,Filepath),但是正如您所看到的,整个字符串也在捕获括号中。然后我尝试将结果放入带有string[]array=Regex.split的数组中(originalString,SomeRegexHere) 现在我想知道最好的方法是什么,只需删除字符串的第一个和最后一个字符,
((1,01/31/2015)(1,文件路径)(1,名称)(1,代码)(1,字符串)(1,)
我想把这个字符串分成几个部分,在这些部分中我可以获得捕获括号中的信息(例如1,Filepath
或(1,Filepath)
,但是正如您所看到的,整个字符串也在捕获括号中。然后我尝试将结果放入带有string[]array=Regex.split的数组中(originalString,SomeRegexHere)
现在我想知道最好的方法是什么,只需删除字符串的第一个和最后一个字符,这样我就不会有包含整个字符串的捕获括号,或者是否有某种方法可以使用正则表达式来获得我想要的结果?(?
(?<=\()[^()]*(?=\))
你的数据将是
["1,01/31/2015",
"1,Filepath",
"1,name",
"1,code",
"1,String",
"1,"]
您可以创建不带前两个和最后两个括号的子字符串,然后在封闭的括号中拆分此子字符串
var s = "((1,01/31/2015)(1,Filepath)(1,name)(1,code)(1,String)(1, ))";
var result = s.Substring(2, s.Length - 4)
.Split(new string[]{")("}, StringSplitOptions.RemoveEmptyEntries);
foreach(var r in result)
Console.WriteLine(r);
输出
1,01/31/2015
1,Filepath
1,name
1,code
1,String
1,
既然您知道第一个和最后一个字符是括号,我就删除它们并匹配其余的数据。正则表达式就可以了。不是RegEx.Split
,您需要RegEx.match
此时您不应该担心性能。差异将以毫秒为单位。可以Filepat吗h
或字符串
包含括号?例如“C:\temp\file(1).txt”或“这是一个字符串(带括号)。“是的,文件路径可以是任何真实的文件路径,因此理论上它可以包含括号。是否(?但是,您的模式与之匹配。mm试图使用这个,但我在([“(”,”)上遇到了一系列错误],
part,不知道为什么它不喜欢这样。我的道歉..被javascript占用了太多时间。我已经编辑了答案谢谢,非常好!不过我需要小心不要在文件名中使用任何括号,因为那样会把事情搞砸haha@Dante1986如果文件名中有paren,但它们不“好”,那么我认为不会可以拆分字符串(例如文件名文件)(.txt
是有效名称)。
1,01/31/2015
1,Filepath
1,name
1,code
1,String
1,