只要有空格并且下一个字符是数字,我想拆分一个字符串。例如输入字符串:
Golden State 97 Indiana 108 (FINAL)
应该拆分为:
string[0]:Golden State
string[1]:97
string[2]:Indiana
string[3]:108
string[4]:FINAL
请帮我解决这个问题。谢谢
只要有空格并且下一个字符是数字,我想拆分一个字符串。例如输入字符串:
Golden State 97 Indiana 108 (FINAL)
应该拆分为:
string[0]:Golden State
string[1]:97
string[2]:Indiana
string[3]:108
string[4]:FINAL
请帮我解决这个问题。谢谢
如果你使用正则表达式
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
}
(只要团队名称中没有任何数字组!)
您可以通过拆分来做到这一点,但没有必要。
另一个使用正则表达式的解决方案。这比其他解决方案更通用,因为输入格式不固定。
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();
我建议使用正则表达式来解析字符串。
这是我快速创建的一个
"^([a-zA-Z\s]+) (\d+) ([a-zA-Z\s]+) (\d+) (.+)$"
假设它始终处于您上面描述的形状,这将匹配各个部分。
阅读 MSDN 上的 RegEx 课程。括号中的 RegEx 部分称为组。将字符串与 RegEx 匹配后,您可以访问组,每个组将包含字符串的一部分,例如“Golden State”。
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx