在 C# 中拆分字符串
本文关键字:字符串 拆分 | 更新日期: 2023-09-27 18:32:47
有没有办法拆分以下string
(包含变量x1, x2, x3
)3x1+5x2-8x3<=9
放入以下令牌
中
{3, 1, +5, 2, -8, 3, 9}
您可以为此使用正则表达式,并仅提取带符号的数字:
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
由于情况没有那么复杂,我可能会通过使用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"
分离器与不等式分开。我还把"<="
和">="
不平等放在"<"
和">"
之前.这样做是为了避免在"<="
之前发现"<"