提取{dynamic}之间的所有值并放置在字符串数组中

时间:2013-11-26 11:01:42

标签: c#

我需要在{}括号之间提取所有单词并放在字符串数组中。 问题是括号之间的文本是动态的。

例如:

您好{name},感谢您访问{site}

在本文中,我希望将名称和网站词放在数组中。

谢谢!

4 个答案:

答案 0 :(得分:2)

解决方案:您可以使用Substring()函数来检索字符串的一部分。 语法: Substring(int startindex,int length);

<强>步骤:
1。您需要将index(1) {的{​​{1}}作为第一个参数发送给Substring()

2。您需要以length的形式发送要检索的index(2)字符串} (index2-index1) Substring() String middlevalue=""; String str = "thanks for visiting {site}"; int index1= str.IndexOf("{"); index1++; int index2=str.IndexOf("}"); if(index1!=-1 && index2!=-1) middlevalue=str.Substring(index1, (index2 - index1))); 作为第二个参数。

试试这个:

middlevalue

输出

site包含 - &gt; {{1}}

答案 1 :(得分:2)

Regex应该适合您,请注意{...}之间的所有字词都不应包含任何{...}

var items = Regex.Matches(input, "\{[^{]+\}").Cast<Match>()
                 .Select(m=>m.Value.Trim('{','}')).ToArray();

答案 2 :(得分:1)

添加到King的答案,这将帮助您只检索没有括号括号的键。

Regex.Matches(input, @"\{(?<Value>[^{]+)\}").Cast<Match>()
                 .Select(m=>m.Groups["Value"].Value).ToArray();

答案 3 :(得分:0)

试试这个:

    var regex = @"(?<=\{)[^}]*(?=\})";
var text = "Hello my name is {James}";

var matches = Regex.Matches(text, regex);