【发布时间】:2019-06-10 13:33:34
【问题描述】:
我有一个string,我想将它一分为二。通常它是一个名称、运算符和一个值。我想将其拆分为名称和值。名称可以是任何东西,值也可以。我所拥有的是一组运算符,我的想法是将其用作分隔符:
var input = "name>=2";
var separators = new string[]
{
">",
">=",
};
var result = input.Split(separators, StringSplitOptions.RemoveEmptyEntries);
上面的代码给出的结果是name 和=2。但是如果我重新排列分隔符的顺序,那么>= 将是第一个,如下所示:
var separators = new string[]
{
">=",
">",
};
这样,我的name 和2 越来越好,这就是我想要实现的目标。可悲的是,让分隔符保持完美的顺序对我来说是不行的。此外,我收集的分隔符也不是一成不变的。所以,我在想也许我可以用较长的分隔符分割string,并优先考虑较短的分隔符?
感谢您的帮助!
Here 是一个相关问题,解释了为什么在Split() 方法中会出现这种行为。
【问题讨论】:
-
var result = Regex.Split(input, "[><=]+");- 我们根据<、>和=的任意组合进行拆分,例如name>>4、name===other、input<>-456、name<=5、name>=7 -
var result = input.Split(separators.OrderByDescending(s => s.Length).ToArray(), StringSplitOptions.RemoveEmptyEntries);- 我们以正确的方式排序分隔符,然后在其中一些分隔符上进行拆分