我有以下代码
string s = "add(2,3);";
var matchess = Regex.Matches(s, @"\(\s*(?<num>\d+)\s*(\,\s*(?<num>\d+)\s*)*\)");
var results = matchess.Cast<Match>()
.SelectMany(m => m.Groups["num"].Captures.Cast<Capture>())
.Select(c => c.Value).ToArray();
上面的代码检测到两个以上的functionname(number,number)输入,并将结果存储在arraylist中以便能够访问。
有没有办法以这样的方式改变方程式,它也会接受以下内容并相应地打印结果?
示例1
string s = "add(2.2,3.3);";
结果1
results[0] = 2.2
results[1] = 3.3
示例2
string s = "add(2.4,3.5,6.7);";
结果2
results[0] = 2.4
results[1] = 3.5
results[2] = 6.7
示例3
string s = "test("this is a test","just an example");";
结果3
results[0] = "this is a test"
results[1] = "just an example"
例4
string s = "test("this is a test","just an example","testing");";
结果4
results[0] = "this is a test"
results[1] = "just an example"
results[2] = "testing"
基本上我需要的是输入多于2个函数名(十进制,十进制)和&amp; functionname(string,string)并将结果存储在arraylist中以访问它们。
请指教。感谢
答案 0 :(得分:1)
试试这个:
string s = "aa(1.2,3.5)";
//Or
string s = "aa(sad,asd)";
var info = Regex.Split(
Regex.Matches(s, @"\(.*?\)")
.Cast<Match>().First().ToString()
.Replace("(", string.Empty).
Replace(")", string.Empty), @"[\s,]+");
首先我在()
区域获取字符串:
Regex.Matches(s, @"\(.*?\)");
获得第一场比赛
.Cast<Match>().First().ToString()
删除(
和)
.Replace("(", string.Empty).Replace(")", string.Empty)
在,
表单结果
Regex.Split(result, @"[\s,]+");