C# 如何将字符串拆分为一个字符,但仅当它不包含在括号内时?
输入:C# 如何将字符串拆分为一个字符,但仅当它不包含在括号内时?,c#,regex,C#,Regex,输入:((为什么,见鬼),(问我),(Bla,No)) 如何将此数据拆分为字符串数组: Element1 (Why,Heck) Element2 (Ask,Me) Element3 (Bla,No) 我尝试了String.Split或String.TrimEnd/Start,但结果不可能总是错误的 使用Regex会更好吗?var input=“((为什么,见鬼),(问我),(Bla,No))”; var input = "((Why,Heck),(Ask,Me),(Bla,N
((为什么,见鬼),(问我),(Bla,No))
如何将此数据拆分为字符串数组:
Element1 (Why,Heck)
Element2 (Ask,Me)
Element3 (Bla,No)
我尝试了String.Split或String.TrimEnd/Start,但结果不可能总是错误的
使用Regex会更好吗?var input=“((为什么,见鬼),(问我),(Bla,No))”;
var input = "((Why,Heck),(Ask,Me),(Bla,No))";
var result = Regex.Matches(input, @"\([^\(\)]+?\)")
.Cast<Match>()
.Select(m => m.Value)
.ToList();
var result=Regex.Matches(输入@“\([^\(\)]+?\)”)
.Cast()
.选择(m=>m.Value)
.ToList();
另一种非正则表达式的方法应该有效:
string[] result = str.Split(new[]{"),"}, StringSplitOptions.None)
.Select(s => string.Format("({0})", s.Trim('(', ')')))
.ToArray();
您还可以:
或者你可以只使用正则表达式
我尝试了String.Split或String.TrimEnd/Start,但结果不可能总是错误的。
你尝试了什么?为什么不在问题中?用这个测试它是正确的,除了一件事。它与第一个括号匹配:((为什么,见鬼)
你能修复它与第一个括号匹配的错误吗?@Pheonixblade9已修复。你可以简化:@“\([^(]+?\)”
。回答得好,但仅供参考,你不需要再使用不情愿的量词,也不必在字符类中转义括号。