字符串在有空格时分割,下一个字符是数字

时间:2013-02-27 14:01:56

标签: c#

我想在有空格时分割字符串,下一个字符是数字。 例如输入字符串:

Golden State 97   Indiana 108 (FINAL)

它应分为:

string[0]:Golden State
string[1]:97
string[2]:Indiana
string[3]:108
string[4]:FINAL

请帮我解决这个问题。 谢谢

3 个答案:

答案 0 :(得分:1)

如果使用正则表达式

var regex = new Regex(@"^(.*) (\d+) (.*) (\d+) \((.*)\)$");

然后您可以将您的值设为

var m = regex.Match("Golden State 97 Indiana 108 (FINAL)");
if (m.Success)
{
    var string0 = m.Groups[1].Value; // Golden State
    var string1 = m.Groups[2].Value; // 97
    var string2 = m.Groups[3].Value; // Indiana
    var string3 = m.Groups[4].Value; // 108
    var string4 = m.Groups[5].Value; // FINAL
}

(只要没有一个团队名称中有任何数字组!)

可以通过拆分来做到这一点,但是没有必要。

答案 1 :(得分:0)

我建议使用正则表达式来解析字符串。

这是我很快创建的一个

“^([a-zA-Z \ s] +)(\ d +)([a-zA-Z \ s] +)(\ d +)(。+)$”

这将匹配各个部分,假设它总是处于您上面描述的形状。

阅读MSDN上的RegEx类。括号中我的RegEx部分称为组。将字符串与RegEx匹配后,您可以访问组,每个组将包含字符串的一部分,例如“金州”。

http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx

答案 2 :(得分:0)

另一种使用正则表达式的解决方案。这比其他解决方案更通用,因为输入格式不固定。

var input = "Golden State 97 Indiana 108 (FINAL)";
var regex = new Regex(@"(?:[a-z][a-z ]*)?[a-z]|\d+", RegexOptions.IgnoreCase);
var values = regex.Matches(input).Cast<Match>().Select(m => m.Value).ToArray();