Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串拆分为包含在括号中的数组_C#_Regex_String_Split - Fatal编程技术网

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,