我正试图在' *'上分成两个字符串。我有以下句子: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 *
答案 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);