我想分割字符串,只要有空格,下一个字符是数字。 例如输入字符串:字符串分割每当有空格,下一个字符是数字
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
请大家帮我出这一点。 谢谢
我建议使用正则表达式来解析字符串。
这里是一个我已经快速创建
“^([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
如果使用正则表达式
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
}
(只要没有队名的有数字的任何组in!)
你可能通过分割来完成,但没有必要。
感谢您的回答。在这里,如果我的输入是变化的,因为我正在通过Feed提供数据。但格式相同 – djain 2013-02-27 16:37:01
另一种正则表达式的解决方案。这比其他解决方案更通用一些,因为输入格式不固定。
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();
它不会分为“金州”,“87印第安纳州”和“108(FINAL)”吗? – yoozer8 2013-02-27 14:03:30
正则表达式是去这里的路。你有什么尝试?还有最后一块遗漏'()'符号 - 应该避免特殊字符? – Nogard 2013-02-27 14:03:38
使用正则表达式可能会有更简单的方法,但您可以将其拆分为空格字符,然后将它们附加在一起,具体取决于您是否可以将索引解析为int或不是。 – 2013-02-27 14:04:11