在 C# 中拆分字符串

本文关键字:字符串 拆分 | 更新日期: 2023-09-27 18:32:47

有没有办法拆分以下string(包含变量x1, x2, x3


3x1+5x2-8x3<=9

放入以下令牌

{3, 1, +5, 2, -8, 3, 9}

在 C# 中拆分字符串

您可以为此使用正则表达式,并仅提取带符号的数字:

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"分离器与不等式分开。我还把"<="">="不平等放在"<"">"之前.这样做是为了避免在"<="之前发现"<"