C#split string.format字符串与正则表达式

C#split string.format字符串与正则表达式,c#,regex,split,string.format,C#,Regex,Split,String.format,我希望能够拆分变量位置指示器上的格式字符串。它将切掉花括号和它们之间表示数字的位置。 因此,字符串: string format = "{0} field needs to be set to '{1}' when {2}, Fixit. NOW!"; 应解析为3个字符串 “字段需要设置为“”” “‘何时’ “来,修好它,现在!” 我们使用类似上述“格式”的字符串来生成错误消息。我的目标是添加可以采用该格式的通用单元测试,并验证生成的错误消息是否与预期格式匹配。由于错误生成代码和单元测

我希望能够拆分变量位置指示器上的格式字符串。它将切掉花括号和它们之间表示数字的位置。
因此,字符串:

string format = "{0} field needs to be set to '{1}' when {2},  Fixit.  NOW!";
应解析为3个字符串

  • “字段需要设置为“””
  • “‘何时’
  • “来,修好它,现在!”
我们使用类似上述“格式”的字符串来生成错误消息。我的目标是添加可以采用该格式的通用单元测试,并验证生成的错误消息是否与预期格式匹配。由于错误生成代码和单元测试引用相同的格式,因此在对消息进行微小更改时,不需要更新单元测试

在上面的示例中,我将能够通过调用名为SplitFormatString的新方法来测试预期结果

string fieldName = "UserName";
string expectedValue = "Bob";
string condition = "excellence is a must";
string errorMessage = TestFieldValueErrorCase( );
AssertStringContainsAllThese(errorMessage, SplitFormatString(format), fieldName, expectedValue,condition);
经过验证

public static void AssertStringContainsAllThese(string msg, string[] formatChunks, params string[] thingsToFind)
{
  foreach (var txt in formatChunks.Concat(thingsToFind))
  {
    Assert.IsTrue(msg.Contains(txt), "Could not find <<" + txt + ">> in msg >>> " + msg);               
  }
}
publicstaticvoidassertstringcontainsallthis(stringmsg,string[]formatChunks,params string[]thingsToFind)
{
foreach(formatChunks.Concat中的var txt(thingsToFind))
{
Assert.IsTrue(msg.Contains(txt),“在msg>>>中找不到”+msg);
}
}
我宁愿使用正则表达式,而不是使用子字符串的不雅观方法。

我想你会想要的

在正则表达式模式定义的位置将输入字符串拆分为子字符串数组

应输出:

["","field needs to be set to '","' when ",",  Fixit.  NOW!"]
我想你会想要的

在正则表达式模式定义的位置将输入字符串拆分为子字符串数组

应输出:

["","field needs to be set to '","' when ",",  Fixit.  NOW!"]

然后在
\n
上拆分?是的,就像那样。然后在
\n
上拆分?是的,就像那样。ThxSure
。其中(s=>!string.isNullOrWhitespace(s))
。当然
。其中(s=>!string.isNullOrWhitespace(s))