在花括号c#之间获取值

时间:2013-06-29 10:57:53

标签: c# regex string c#-4.0 string-split

我之前从未使用过正则表达式。我很高兴在论坛上看到类似的问题但不完全是我正在寻找的问题

我有一个像下面这样的字符串。需要获得花括号之间的值

  

例如:“{name}{name@gmail.com}”

我需要获得以下分裂字符串。

  

name和name@gmail.com

我尝试了以下内容,它给了我相同的字符串。

string s = "{name}{name@gmail.com}";
string pattern = "({})";
string[] result = Regex.Split(s, pattern);

3 个答案:

答案 0 :(得分:27)

使用Matches Regex而不是Split轻松完成此操作:

string input = "{name}{name@gmail.com}";
var regex = new Regex("{(.*?)}");
var matches = regex.Matches(input);
foreach (Match match in matches) //you can loop through your matches like this
{
  var valueWithoutBrackets = match.Groups[1].Value; // name, name@gmail.com
  var valueWithBrackets = match.Value; // {name}, {name@gmail.com}
}

答案 1 :(得分:17)

正在使用正则表达式吗?在这个特定的例子中,我会写:

s.Split(new char[] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries)

答案 2 :(得分:0)

你去吧

string s = "{name}{name@gmail.com}";
s = s.Substring(1, s.Length - 2);// remove first and last characters
string pattern = "}{";// split pattern "}{"
string[] result = Regex.Split(s, pattern);

string s = "{name}{name@gmail.com}";
s = s.TrimStart('{');
s = s.TrimEnd('}');
string pattern = "}{";
string[] result = Regex.Split(s, pattern);