用于格式化字符串的正则表达式或一个线性代码

时间:2015-01-18 13:10:21

标签: c# regex

我正在尝试执行以下操作:

代码前的字符串:

"a"
"aa"
" a"
"a b c"

代码后的字符串:

"{a}"
"{aa}"          
"{a}"
"{a} {b} {c}"

我写了以下代码,这样做很好,但我想知道有更好的方法吗?一个班轮或Regex代码?我对C#Regex不熟悉。

 string[] s = MyString.Split(' ');
 string x = "";
 foreach (var item in s)
 {
     if (item.Length > 0)
     {
         x += String.Format("{{{0}}}", item);
         if (s[s.Length-1] != item)
         {
             x += " ";
         }
     }
 }
 return x;

3 个答案:

答案 0 :(得分:1)

String.Join(" ", 
            MyString.Split(new char[]{' '},
                           StringSplitOptions.RemoveEmptyEntries)
            .Select(s => "{" + s + "}"))

答案 1 :(得分:1)

您可以替换

\s*(\w+)\b((?=.*\w)\s|)\s*

{$1}$2

regex101 demo.

答案 2 :(得分:1)

只需使用以下正则表达式,然后将匹配替换为{$1}

@"\s*(\w+)\s*"

即,

string result = Regex.Replace(inputstring, @"\s*(\w+)\s*", "{$1}");

DEMO