StringSplitOptions.没有一个不像预期的那样工作

本文关键字:工作 有一个 StringSplitOptions | 更新日期: 2023-09-27 18:09:44

我试图使用两个分隔符将字符串转换为字符串[],我希望分隔符在结果字符串[]节点中为空字符串

string source = "(('CO.IN'.bit = C) OR ('CO.IN'.bit = V))";
char[] delimiters = new char[] { '(', ')' };
string[] parts = source.Split(delimiters,StringSplitOptions.None);

string[]部分的预期结果是:

[null]
[null]
'CO.IN'.bit = C
[null]
' OR '
[null]
'CO.IN'.bit = V
[null]
[null]

但是得到的结果是:

[null]
[null]
'CO.IN'.bit = C
' OR '
'CO.IN'.bit = V
[null]
[null]

我错过了两个节点,我不明白为什么。

有谁能帮帮我吗?

StringSplitOptions.没有一个不像预期的那样工作

您获得分隔符的null值的假设是错误的。如果两个分隔符之间没有文本,则得到一个空字符串。

出现前两个空字符串(post中的[null])是因为字符串的开始和第一个分隔符之间没有文本,并且第一个和第二个分隔符之间没有文本。

但是C) OR ('CO(字符串的一部分)可以分为C, OR'CO,两个分隔符之间没有空字符串

输出正常。请注意OR前后有空格。期望值不是你说的那样。输出的"或"是"或"而不是"或"。

我对函数的工作方式是错误的。我希望分隔符变成数组的空节点。但是德克帮助我理解了它的作用。

得到的结果是:

[null]
[null]
'CO.IN'.bit = C
' OR '
'CO.IN'.bit = V
[null]
[null]

这意味着字符串之间有分隔符

[null]
Delimiter
[null]
Delimiter
'CO.IN'.bit = C
Delimiter
' OR '
Delimiter
'CO.IN'.bit = V
Delimiter
[null]
Delimiter
[null]

我假设分隔符总是在每个字符串的末尾,而不是在最后一个节点。我的循环很有效。知道使用哪个分隔符是另一个问题。

非常感谢!

相关文章: