如何使用c#regex拆分带有嵌套参数的行?
如何使用c#regex拆分带有嵌套参数的行 "一,;2.3'-'1','2','3' "一,;(1;2;3);(1)(1 ; 2 ; 3)"-"1","(1,2,3)"(1,2,3) 嵌套参数的数量可以是任意的如何如何使用c#regex拆分带有嵌套参数的行?,c#,C#,如何使用c#regex拆分带有嵌套参数的行 "一,;2.3'-'1','2','3' "一,;(1;2;3);(1)(1 ; 2 ; 3)"-"1","(1,2,3)"(1,2,3) 嵌套参数的数量可以是任意的如何 不是您寻求的Regex解决方案,而是此递归方法将相应地拆分嵌套结构 static IEnumerable<object> RecursiveSplit(string s) { string num = ""; for (int i = 0; i <
不是您寻求的
Regex
解决方案,而是此递归方法将相应地拆分嵌套结构
static IEnumerable<object> RecursiveSplit(string s)
{
string num = "";
for (int i = 0; i < s.Length; i++)
{
if (s[i] == '(')
{
i++;
int start = i;
for (int sub = 1; sub > 0; i++)
{
if (s[i] == '(')
sub++;
else if (s[i] == ')')
sub--;
}
yield return RecursiveSplit(s.Substring(start, i - start - 1));
}
else if (s[i] == ';')
{
yield return num;
num = "";
}
else
{
num += s[i];
}
}
if (num != "")
yield return num;
}
静态IEnumerable RecursiveSplit(字符串s)
{
字符串num=“”;
对于(int i=0;i0;i++)
{
如果(s[i]=='(')
sub++;
如果(s[i]==')')
分--;
}
收益率返回递归分割(s.Substring(start,i-start-1));
}
如果(s[i]==';')为else
{
收益数;
num=“”;
}
其他的
{
num+=s[i];
}
}
如果(num!=“”)
收益数;
}
C和C#是两种截然不同的语言。标题是C#,而问题是C。请纠正这种不一致性,并展示您迄今为止所做的尝试。这可能有助于读者不太清楚您希望从输入中得到什么结果。最好的方法可能是尝试使用支持r的编辑器然后将其转换为C的正则表达式。
static IEnumerable<object> RecursiveSplit(string s)
{
string num = "";
for (int i = 0; i < s.Length; i++)
{
if (s[i] == '(')
{
i++;
int start = i;
for (int sub = 1; sub > 0; i++)
{
if (s[i] == '(')
sub++;
else if (s[i] == ')')
sub--;
}
yield return RecursiveSplit(s.Substring(start, i - start - 1));
}
else if (s[i] == ';')
{
yield return num;
num = "";
}
else
{
num += s[i];
}
}
if (num != "")
yield return num;
}