在c#中,将数字与包含空格和连字符的字符串分开

本文关键字:连字符 字符串 空格 包含 数字 | 更新日期: 2023-09-27 18:05:55

我正在开发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 -销售-包装服务-羊肉(1F)"这是视图中的完整字符串。当我使用上面的Regex分隔代码和描述时,我得到以下内容,

numberPart = 2103010001
alphaPart = SALES

我要的是:

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

做这个的合适表达式是什么?

在c#中,将数字与包含空格和连字符的字符串分开

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

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

如果你想更具体,你可以将"after"部分限制为你期望的字符,也许

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

但是你仍然需要前面的[a-zA-Z],否则你也会匹配数字部分

根据第一个-字符进行分割。

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