\$\begingroup\$
\$\endgroup\$
My purpouse is to select every character which is surrounded by {
and }
, this is easily achievable using this regexp {\w*}
.
I've developed an extenstion method for strings:
public static IEnumerable<string> ObtainTokens(this string originalString)
{
Regex expression = new Regex(@"{\w*}");
foreach (Match element in expression.Matches(originalString))
{
//Exclude the brackets from the returned valued
yield return Regex.Replace(element.Value, @"{*}*", "");
}
}
Is there a way to get rid of of Regex.Replace
?
Returning the values as IEnumerable is a good choice?
1 Answer 1
\$\begingroup\$
\$\endgroup\$
2
Modify your regexp: {(\w*)}
and then replace:
yield return Regex.Replace(element.Value, @"{*}*", "");
with
yield return element.Groups[1].Value;
ps: full code is avaialbe here
-
\$\begingroup\$ By applying your suggestion on the test string
{THIS} is a {TEST}
the response is anIEnumerable<string>
containing two empty string. \$\endgroup\$Abaco– Abaco2012年12月13日 09:54:23 +00:00Commented Dec 13, 2012 at 9:54 -
1\$\begingroup\$ regex has beed updated to capture groups:
{(\w*)}
\$\endgroup\$Akim– Akim2012年12月13日 10:16:24 +00:00Commented Dec 13, 2012 at 10:16
lang-cs