在*character regex上拆分字符串

Mat*_*ack 1 c# regex

我试图在'*'字符上将字符串拆分为两个,我有以下句子: This is * test string

我写了这段代码

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

            foreach (string match in substrings)
            {
                Console.WriteLine("'{0}'", match);
            }
Run Code Online (Sandbox Code Playgroud)

但我得到以下输出:

'T'h'i's' 'i's'....
Run Code Online (Sandbox Code Playgroud)

但我希望:

'This is ' ' test string'
Run Code Online (Sandbox Code Playgroud)

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

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

This is * test *
Run Code Online (Sandbox Code Playgroud)

Gra*_*ICA 5

"我在句子中可能有不止一个'*',String.split会起作用吗?"

是的,你也可以实现你想要做的事情String.Split():

var text = "This is * test *";

var substrings = text.Split('*');
Run Code Online (Sandbox Code Playgroud)

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

"这是 "

"测试"

""

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

var substrings =
    text.Split(new[] {'*'}, StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)


hwn*_*wnd 5

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

Regex regex = new Regex(@"\*");
Run Code Online (Sandbox Code Playgroud)

...

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);
Run Code Online (Sandbox Code Playgroud)

产量

'This is '
' test '
' more '
' test'
Run Code Online (Sandbox Code Playgroud)