C#中包含空格和连字符的String中的单独数字

时间:2015-08-01 10:06:15

标签: c# regex

我正在开发C#MVC应用程序。我从视图中的一个字段获得了帐户名称及其代码,但我必须将它们隔离以便将它们存储在数据库中。我使用了正则表达式,并成功地将代码与字符串的其余部分分开。但是在字符串部分我只能在空格或连字符之前得到字符串。我的正则表达式是:

string numberPart = Regex.Match(s, @"\d+").Value;
string alphaPart = Regex.Match(s, @"[a-zA-Z]+\s+").Value;
d.code = numberPart;
d.name = alphaPart;

“2103010001 - SALES - PACKING SERV - MUTTON(1F)” 这是我在视图中的完整字符串。当我使用上面的Regex分离代码和描述时,我得到以下内容,

numberPart = 2103010001
alphaPart = SALES

我想要的是:

numberPart = 2103010001
alphaPart = SALES - PACKING SERV - MUTTON ( 1F )

这样做的恰当表达方式是什么?

2 个答案:

答案 0 :(得分:1)

对于第二个正则表达式,你基本上想要#(包括)第一个字母"之后的所有内容。因此,您可以尝试

string alphaPart = Regex.Match(s, @"[a-zA-Z].*").Value;

如果您想更具体,可以限制""""部分只是你期望的角色,也许

string alphaPart = Regex.Match(s, @"[a-zA-Z][a-zA-Z0-9 ()-]*").Value;

但您仍然需要领先[a-zA-Z],否则您也会匹配数字部分。

答案 1 :(得分:1)

只需根据第一个-字符进行拆分。

Regex.Split(input, @"(?<=^[^-]*?)\s*-\s*");

DEMO