我有这个代码来格式化字符串
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
)中提取last
和f
。这意味着我要对f
进行格式化以提取{{1} }和first
(我的格式为基础(last
))。
有一种方法是这样的:
s
(艰难和坏的方式)但我认为.Net中有一个简单的解决方案,但我不知道这是什么。
任何人都可以告诉我简单的方法是什么?
答案 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();