我有一个字符串,看起来像一个方法:
"method(arg1,arg2,arg3);"
我需要以字符串的形式获取所有参数,即:
"arg1"
"arg2"
"arg3"
我该怎么办?我尝试了以下代码:
var input = LineText;
var split = input.Split(',');
var result = String.Join(",", split.Skip(1).Take(split.Length - 2));
var split2 = input.Split(',');
var result2 = String.Join(",", split.Skip(2).Take(split.Length - 2));
var split3 = input.Split(',');
var result3 = String.Join(",", split.Skip(3).Take(split.Length - 2));
但是它不能正常工作。
我不需要正则表达式。
答案 0 :(得分:0)
您可以使用正则表达式或带有此简单字符串的纯字符串方法。首先用String.IndexOf
找到括号的开头和结尾。然后使用Substring
和Split
:
static string[] ExtractArguments(string methodSig)
{
int bracketStart = methodSig.IndexOf('(');
if (bracketStart == -1) return null;
int bracketEnd = methodSig.IndexOf(')', bracketStart + 1);
if (bracketEnd == -1) return null;
string arguments = methodSig.Substring(++bracketStart, bracketEnd - bracketStart);
return arguments.Split(',').Select(s => s.Trim()).ToArray();
}
答案 1 :(得分:0)
使用正则表达式的替代解决方案:
var s = "method(arg1,arg2,arg3);";
// Use regex to match the argument sequence "arg1,arg2,arg3"
var match = Regex.Match(s, @"^\w+\((.+)\);$");
// Split the arguments and put them into an array
string[] arguments = match.Groups[1].ToString().Split(',').ToArray();
答案 2 :(得分:0)