String.Format的反转?

str*_*ger 9 .net c# string

可能重复:
解析格式化的字符串.

如何使用String.Format格式并将其输出转换为输入?

例如:

string formatString = "My name is {0}.  I have {1} cow(s).";

string s = String.Format(formatString, "strager", 2);

// Call the magic method...
ICollection<string> parts = String.ReverseFormat(formatString, s);
// parts now contains "strager" and "2".
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用正则表达式来执行此操作,但我想使用相同的格式字符串,因此我只需要维护一行代码而不是两行代码.

Joh*_*udy -1

我不相信有任何内置的东西可以支持这一点,但在 C# 中,您可以将对象数组直接传递给任何采用params- 标记数组参数的方法,例如String.Format(). 除此之外,我不相信 C# 和 .NET Framework 有某种方法可以知道字符串 X 是从魔术格式字符串 Y 构建的并撤消合并。

因此,我唯一能想到的是你可以这样格式化你的代码:

object[] parts = {"strager", 2};
string s = String.Format(formatString, parts);

// Later on use parts, converting each member .ToString()
foreach (object p in parts)
{
    Console.WriteLine(p.ToString());
}
Run Code Online (Sandbox Code Playgroud)

不理想,可能不完全是您正在寻找的,但我认为这是唯一的方法。