スペースがあり、次の文字が数字のときはいつでも文字列を分割したい。たとえば、入力文字列:
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
}
(チーム名に数字のグループが含まれていない限り!)
分割によってこれを行うことができますが、必要はありません。
文字列を解析するには正規表現をお勧めします。
これが私が急いで作成したものです
"^([a-zA-Z\s]+) (\d+) ([a-zA-Z\s]+) (\d+) (.+)$"
これは、常に上で説明した形状であると仮定して、さまざまなパーツに一致します。
MSDN の RegEx クラスについて読んでください。私の正規表現の括弧内の部分はグループと呼ばれます。文字列を RegEx と照合したら、グループにアクセスできます。各グループには、「Golden State」などの文字列の一部が含まれます。
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx
正規表現を使用したさらに別のソリューション。入力形式が固定されていないため、これは他のソリューションよりも少し一般的です。
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();