我试图在'*'字符上将字符串拆分为两个,我有以下句子: 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)
"我在句子中可能有不止一个'*',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)
从正则表达式中删除双重转义:
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)