有一个字符串,如aaa varchar(10),
现在想定义三个string分别存储上面的信息:
a="aaa";
b="varchar";
c="10";请问如何能实现该结果,并且什么样的解决思路比较好?注:aaa和varchar之间 可能是空格 也有可能是\t.谢谢
在线等。
现在想定义三个string分别存储上面的信息:
a="aaa";
b="varchar";
c="10";请问如何能实现该结果,并且什么样的解决思路比较好?注:aaa和varchar之间 可能是空格 也有可能是\t.谢谢
在线等。
List<string> list = new List<string>() { "aaa varchar(10)", "bbb int" };
string a = string.Empty;
string b = string.Empty;
string c = string.Empty;
Regex reg = new Regex(@"(?s)([^\s]+)\s*([^\s\(]+)(?:\(([^\)]+)\))?");
foreach (string s in list)
{
Match m = reg.Match(s);
a = m.Groups[1].Value;
b = m.Groups[2].Value;
c = m.Groups[3].Value;
Console.WriteLine("{0} {1} {2}", a, b, c);
}
Console.ReadLine();
/*
aaa varchar 10
bbb int
*/
^(\w+)\s+(varchar)\s*(\(\d+\))$
aaa varchar (10)示例代码如下:
string source = @"aaa varchar(10)";
Regex reg = new Regex(@"^(\w+)\s+(varchar)\s*(\(\d+\))$");
Match match = reg.Match(source);// 从第2个g开始,即m.Group[1]开始,就分别对应上面提到的几段
foreach (var g in match.Groups)
{
Console.WriteLine(g);
}
结果:
aaa varchar(10)
aaa
varchar
(10)