有没有办法拆分以下string
(包含变量x1, x2, x3
)
3x1+5x2-8x3<=9
进入以下令牌
{3, 1, +5, 2, -8, 3, 9}
答案 0 :(得分:5)
您可以使用正则表达式并仅提取带有符号的数字:
const string str = "3x1+5x2-8x3<=9";
var result = Regex.Matches(str, @"([\+\-]?[\d]+)", RegexOptions.Singleline)
.Cast<Match>().Select(x => x.Value).ToList();
结果:
[0] "3" string
[1] "1" string
[2] "+5" string
[3] "2" string
[4] "-8" string
[5] "3" string
[6] "9" string
答案 1 :(得分:3)
由于案例并不复杂,我可能会使用string.Split
代替Regex
解决此类问题:
string str = "3x1+5x2-8x3<=9";
str = str.Replace("+", "x+").Replace("-", "x-");
string[] words = str.Split(new string[] {"x", "<=", ">=", "<", ">"}, StringSplitOptions.RemoveEmptyEntries);
这个想法是让"x"
除了不等式之外的分隔符。我还在"<="
和">="
之前设置了"<"
和">"
不等式。这样做是为了避免在"<"
"<="