0

文字列をフォーマットするためのこのコードがあります

string s = "the first number is: {0} and the last is: {1} ";
int first = 2, last = 5;
string f = String.Format(s, first, last);

最終的にフォーマットされたstring()から抽出firstしたい。これは、抽出するためにフォーマットを解除したいことを意味します(フォーマットbase()があります)。lastfffirstlasts

これである方法があります:

  • string.Split()(難しい方法と悪い方法)を使用してそれらを抽出します

.Netには簡単な解決策があると思いますが、これが何であるかわかりません。

誰かが簡単な方法を教えてもらえますか?

4

3 に答える 3

5

ここで正規表現を使用してみませんか?

string s = "the first number is: {0} and the last is: {1} ";
int first = 2, last = 5;
string f = String.Format(s, first, last);

string pattern = @"the first number is: ([A-Za-z0-9\-]+) and the last is: ([A-Za-z0-9\-]+) ";
Regex regex = new Regex(pattern);
Match match = regex.Match(f);
if (match.Success)
{
    string firstMatch = match.Groups[1].Value;
    string secondMatch = match.Groups[2].Value;
}

適切なエラーチェックを行うことで、明らかに堅牢にすることができます。

于 2012-04-15T16:48:38.960 に答える
1

正規表現を使用して、より動的な方法でそれを実現できます。

于 2012-04-15T16:24:24.167 に答える
1

これはあなたが探しているものですか?

        string s = "the first number is: {0} and the last is: {1} ";
        int first = 2, last = 5;
        string f = String.Format(s, first, last);
        Regex rex = new Regex(".*the first number is: (?<first>[0-9]) and the last is: (?<second>[0-9]).*");
        var match = rex.Match(f);
        Console.WriteLine(match.Groups["first"].ToString());
        Console.WriteLine(match.Groups["second"].ToString());
        Console.ReadLine();
于 2012-04-15T16:50:39.447 に答える