我有一个字符串输入,如:var input = "1. J. Carter 2. Mark R. 1000. Axl"可以有任意数量的名称,但关键是我需要将此字符串拆分为这样的数组J·卡特马克 R。轴我认为应该有一种方法可以用正则表达式来做到这一点,但我对这个主题完全陌生,所以我非常感谢你的帮助。
3 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
你当然可以用正则表达式来做到这一点。这应该适合你:
var names = new Regex(@"\d+\.\s+([^\d]+)").Matches(input) .Cast<Match>() .Select(m => m.Groups[1].Value); .ToList();
将
\d+
一个或多个数字相匹配。该
\.
文字匹配的.
字符。本
\s+
场比赛的一个或多个空格字符。将
()
创建一个捕获组。本
[^\d]+
场比赛的一个或多个非数字字符(基本名称)。
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
这对我来说是一个正则表达式:
((?<Number>\d+)\.\s+)(?<Name>[a-zA-Z\.\s]+)(\s*)
对于每场比赛,您会得到一个名为“Number”的组,其中包含一个或多个数字 (the \d+
),以及一个名为“Name”的组,其中包含您要查找的名称。在[a-zA-Z\.\s]+
与名称相关联的说,任何数量的大写或小写字母,点或空格。在\.\s+
一个点后面跟着一个或多个空格,而结尾写着”(\s*)
吞任何可能尾随空格。
解析您的字符串,我得到三个匹配项,以及您期望的数字和名称。
- 3 回答
- 0 关注
- 317 浏览
添加回答
举报
0/150
提交
取消