在* character regex上拆分字符串

时间:2014-07-30 21:45:46

标签: c# regex

我正试图在' *'上分成两个字符串。我有以下句子:This is * test string

我写了这段代码

            Regex regex = new Regex(@"\\*");
            string[] substrings = regex.Split(text);

            foreach (string match in substrings)
            {
                Console.WriteLine("'{0}'", match);
            }

但我得到以下输出:

'T'h'i's' 'i's'....

但我希望:

'This is ' ' test string'

任何想法如何纠正我的正则表达式?

编辑:我的句子可能有多个' *'字符,在这种情况下我需要三个句子,例如:

This is * test *

3 个答案:

答案 0 :(得分:5)

  

“我的句子中可能有多个'*',String.split会工作吗?”

是的,您也可以通过String.Split()实现您的目标:

var text = "This is * test *";

var substrings = text.Split('*');

这将为您提供一个包含三个字符串的数组。

  

“这是”

     

“测试”

     

“”

最后一个字符串是一个空字符串,您可以使用接受StringSplitOptions值的方法重载来省略它:

var substrings =
    text.Split(new[] {'*'}, StringSplitOptions.RemoveEmptyEntries);

答案 1 :(得分:5)

从正则表达式中删除双重转义:

Regex regex = new Regex(@"\*");

...

Regex regex = new Regex(@"\*");
String text = "This is * test * more * test";
string[] substrings = regex.Split(text);

foreach (String match in substrings)
         Console.WriteLine("'{0}'", match);

输出

'This is '
' test '
' more '
' test'

答案 2 :(得分:0)

根据您的预期输出,代码可能会有所帮助:

string text = "This is * test string";
Regex regex = new Regex(@"\*");
string[] substrings = regex.Split(text);
string output = "";
foreach (string match in substrings)
{   
    output += match;
}
Console.WriteLine(output);