我想拆分以下字符串
5 + 91 * 6 + 8 - 79
结果得到一个数组,它将以相同的顺序保存所有元素(包括符号)
像这样{5, +, 91, *, 6, +, 8, -, 79}
等
我不能用空格分割它,因为字符串也可以像5 + 91* 6+ 8 -79
那样
完全没有空格5+91*6+8-79
我试过这个
string[] result = Regex.Split(str, @"[\d\+\-\*]{1,}");
但是当我尝试这个时,它在cmd上没有返回任何内容
foreach (string value in result)
{
Console.WriteLine(value);
}
答案 0 :(得分:3)
您正在寻找Matches()
:
string str = "5 + 91* 6+ 8 -79";
MatchCollection result = Regex.Matches(str, @"\d+|[\+\-\*]");
foreach (var value in result)
{
Console.WriteLine(value);
}
Console.ReadLine();
这会给你:
答案 1 :(得分:3)
你可以用一点Linq来做到这一点:
string[] result = Regex.Matches(str, @"\d+|[\+\-\*]")
.Cast<Match>().Select(m => m.Value).ToArray();
或者在查询语法中:
string[] result =
(from m in Regex.Matches(str, @"\d+|[\+\-\*]").Cast<Match>()
select m.Value)
.ToArray();
答案 2 :(得分:0)
您可以使用此正则表达式拆分
(?<=\d)\s*(?=[+*/-])|(?<=[+*/-])\s*(?=\d)
是的,它很长但它确实分裂了字符串!