我正在尝试使用两个分隔符将字符串转换为string[],并且我希望结果string[]节点中的分隔符为空字符串
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]我错过了两个节点,我不明白为什么。
有谁能帮帮我吗?
发布于 2013-04-18 18:48:50
您认为获得分隔符的null值的假设是错误的。如果两个分隔符之间没有文本,则会得到一个空字符串。
出现前两个空字符串(在您的帖子中为null)是因为字符串开头和第一个分隔符之间没有文本,第一个和第二个分隔符之间也没有文本。
但是C) OR ('CO (字符串的一部分)可以拆分成C、OR和'CO,两个分隔符之间没有空字符串。
发布于 2013-04-18 18:48:28
输出是OK的。请注意OR前后的空格。期望值不是你说的那样。输出" OR“是"OR”,而不是“OR”。
发布于 2013-04-19 14:11:45
我对函数的工作方式的理解是错误的。我期望分隔符转换为数组的空节点。但是Dirk帮助我理解了它的作用。
得到的结果是:
[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]我假设分隔符总是在每个字符串的末尾,但不是在最后一个节点。我的循环运行得很好。知道使用哪个分隔符是另一回事。
非常感谢!
https://stackoverflow.com/questions/16080843
复制相似问题