我的字符串的占位符总是以{text}
的形式出现例如:
The {adjective} brown {animal} {action}s over the lazy {secondanimal}!
我希望有一个字符串["{adjective}","{animal}","{action}","{secondanimal}"]
我希望避免编写一个看似如下的解决方案:
Look for '{' then look for '}' then take substring.
使用正则表达式或LINQ可能更简单的方法是什么?我注意到了Split方法,但我不仅仅是一个分隔符。
答案 0 :(得分:2)
假设您的{param}
元素只包含单词字符,我会使用{[\w]+}
来匹配它们。
string input = "The {adjective} brown {animal} {action}s over the lazy {secondanimal}!";
string[] result = Regex.Matches(input, @"{[\w]+}").Cast<Match>().Select(x => x.Value).ToArray();
{param}
的定义有点宽泛。对于此示例,您还可以使用{[a-z]+}
。
请注意,此方法不适用于嵌套{param}
。