首先,我想从分隔符之间的字符串中提取子字符串到参数中,并使字符串变成String.Format的字符串。
示例
来源:
<Hello> [World]!
输出:
结果字符串
<{0}> [{1}]!
数组中提取的参数
0: Hello
1: World
有许多字符串包含未知数量的参数。此外,还有两种类型的分隔符:<>
和[]
。
我使用正则表达式搜索字符串提取示例,但大多数都是基于静态字符串格式。但是,字符串的格式是未知的,在这种情况下可能包含也可能不包含任何分隔符。
编辑: 其他分隔符可能有分隔符包装,但分隔符将始终成对出现。
示例
来源:
[<Hello> World]!
输出:
结果字符串
[{0}]!
数组中提取的参数
0: <Hello> World
仅考虑外部分隔符。里面的任何东西都应该是参数。
答案 0 :(得分:3)
您可以尝试使用正则表达式来解析匹配的<>
和[]
集。然后使用regex replace和custom MatchEvaluator
这样的事可能有用:
var regex = new Regex(@"(?<=\<).*(?=\>)|(?<=\[).*(?=\])");
var input = "<Hello> [World]!";
var index = 0;
var replacements = new List<string>();
var formatString = regex.Replace(input, (m) =>
{
replacements.Add(m.Value);
return String.Format("{{{0}}}", index++);
});
我还没有真正处理包含<>[]
的输入字符串,但你可以弥补和转义模式并处理它。原始正则表达式基于this answer。