带多括号的拆分字符串表达式(C#)
我有下面的字符串,我想以这样一种方式拆分它:函数带多括号的拆分字符串表达式(C#),c#,C#,我有下面的字符串,我想以这样一种方式拆分它:函数fnGetDate的两个参数都可以分开 功能: "fnGetDate('d',-1+ cint(cbool(DatePart('w',Date())<=2)) + cint(cbool(DatePart('w',Date())=2)))" 根据您的评论,计算开始和结束括号的数量对您来说是可以的 这个例子对我很有用: string str = "fnGetDate('d',-1+ cint(cbool(DatePart('w',Date())
fnGetDate
的两个参数都可以分开
功能:
"fnGetDate('d',-1+ cint(cbool(DatePart('w',Date())<=2)) + cint(cbool(DatePart('w',Date())=2)))"
根据您的评论,计算开始和结束括号的数量对您来说是可以的 这个例子对我很有用:
string str = "fnGetDate('d',-1+ cint(cbool(DatePart('w',Date())<=2)) + cint(cbool(DatePart('w',Date())=2)))";
int parLevel = 0;
List<string> arguments = new List<string>();
string currentString = String.Empty;
foreach (char t in str)
{
switch (t)
{
case '(':
if (t == '(') parLevel++;
currentString += t;
if (parLevel == 1)
{
arguments.Add(currentString);
currentString = String.Empty;
}
break;
case ')':
if (t == ')') parLevel--;
if (parLevel > 0) currentString += t;
break;
case ',':
if (parLevel == 1)
{
arguments.Add(currentString);
currentString = String.Empty;
}
else
currentString += t;
break;
default:
currentString += t;
break;
}
}
if (!String.IsNullOrEmpty(currentString)) arguments.Add(currentString);
for (int i = 0; i < arguments.Count; i++)
Console.WriteLine("Argument {0}: {1}", i, arguments[i]);
string str=“fngedate('d'),-1+cint(cbool(DatePart('w',Date())那么你试过什么了吗?试过正则表达式-^(?>(?)|)(?)(?)|)(!(?))+((X)(?!)。还尝试计算开始括号和结束括号的数量,但没有得到正确的输出。请将您尝试过的代码添加到上述问题中。还添加您尝试过的代码的输出。如果第一个参数可能是“”,则可能需要在“case”“section”中添加一些进一步的检查。谢谢,但我不能t从最终结果中删除括号。请检查我想要的结果output@SystemOnline这样一个奇怪的期望输出:)看看我的更新。它给出了完全相同的结果,你需要的。
string str = "fnGetDate('d',-1+ cint(cbool(DatePart('w',Date())<=2)) + cint(cbool(DatePart('w',Date())=2)))";
int parLevel = 0;
List<string> arguments = new List<string>();
string currentString = String.Empty;
foreach (char t in str)
{
switch (t)
{
case '(':
if (t == '(') parLevel++;
currentString += t;
if (parLevel == 1)
{
arguments.Add(currentString);
currentString = String.Empty;
}
break;
case ')':
if (t == ')') parLevel--;
if (parLevel > 0) currentString += t;
break;
case ',':
if (parLevel == 1)
{
arguments.Add(currentString);
currentString = String.Empty;
}
else
currentString += t;
break;
default:
currentString += t;
break;
}
}
if (!String.IsNullOrEmpty(currentString)) arguments.Add(currentString);
for (int i = 0; i < arguments.Count; i++)
Console.WriteLine("Argument {0}: {1}", i, arguments[i]);