在花括号c#之间获取值

Kur*_*ran 8 c# regex string string-split c#-4.0

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

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

例如:"{name}{name@gmail.com}"

我需要得到以下分裂的字符串.

name和name@gmail.com

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

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

Fab*_*ler 30

使用MatchesRegex,而不是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}
}
Run Code Online (Sandbox Code Playgroud)

  • @Georg相应地更改了答案。包含一个组,以显示带有括号或不带有括号的值。与其他解决方案的区别在于,正则表达式查找匹配项,而其他答案则直接拆分字符串。 (2认同)

小智 17

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

s.Split(new char[] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries)
Run Code Online (Sandbox Code Playgroud)

  • 我投票太快了……这个解决方案没有提供答案。考虑输入字符串:{name}blabla{name@gmail.com},数组中还会有“blabla”... (2认同)