たとえば、次の形式の文字列があります。
[ "{0}", "{1}", "{2}" ]
そのため、その文字列形式には常に 3 つのパラメーター (可変長) があることがわかっています。
文字列を解析する最も効率的な方法は何ですか? (そしておそらくそれに沿った最短のコードなので、いくつかのテストを実行する必要があります)
ありがとう。
最初の解決策:これが最も簡単だと思います-[と](最初と最後の文字)を切り取ります-「、」で分割します-> Trim()-> 3つの部分を取得します-冗長な文字(「{と}」など)を削除します予想される文字列に「{}->分割する前に削除できます」が含まれていないことを確認してください。
2番目の解決策:正規表現を使用する
Regex
クラスまたは文字列メソッドを使用して、さまざまな方法で実行できます。
を使用してそれを行う方法は次のRegex.Match
とおりです。
string s = @"[ ""some test"", ""another test string"", ""hi there!"" ]";
string[] vars = Regex.Matches(s, @"""([^""]*)""")
.Cast<Match>()
.Select(m => m.Groups[1].Value)
.ToArray();
を使用する別の方法Regex.Split
:
vars = Regex.Split(s.Remove(s.Length - 3, 3).Remove(0, 3), @""",\s""");
文字列メソッドでそれを行う 1 つの方法を次に示します。
vars = s.Substring(s.IndexOf("\"") + 1, s.LastIndexOf("\"") - 3)
.Split(new string[] {@""", """}, StringSplitOptions.None);
例: 抽出 --> お元気ですか?
string stuff = @"""{How}"", ""{Are}"", ""{You?}""";
string[] answer = (stuff.Replace(@"""{", String.Empty).Replace(@"}""", String.Empty)).Split(',');
これで、変数 answer に 3 つの単語が保持されます。