从格式化的字符串生成数据

时间:2012-04-15 15:28:57

标签: c# string c#-4.0 string-formatting

我有这个代码来格式化字符串

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

我想从最终格式化的字符串(first)中提取lastf。这意味着我要对f进行格式化以提取{{1} }和first(我的格式为基础(last))。

有一种方法是这样的:

  • 使用s(艰难和坏的方式)
  • 提取它们

但我认为.Net中有一个简单的解决方案,但我不知道这是什么。

任何人都可以告诉我简单的方法是什么?

3 个答案:

答案 0 :(得分: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;
}

显然,通过适当的错误检查可以使其更加健壮。

答案 1 :(得分:1)

您可以使用正则表达式以更动态的方式实现它。

答案 2 :(得分: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();