0

I'm trying to convert a string to string[] using two delimiters and I want delimiters to be null strings in resultant string[] nodes

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

The expected result for string[] parts is:

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

But the result obtained is:

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

I miss two nodes and I don't understand why.

Can anyone help me please?

4

3 回答 3

6

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

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

但是C) OR ('CO(您的字符串的一部分)可以拆分为COR并且'CO两个分隔符之间没有空字符串。

于 2013-04-18T10:48:49.697 回答
4

输出正常。注意 OR 前后的空格。期望值不是你说的。输出“OR”是“OR”而不是“OR”。

于 2013-04-18T10:48:27.597 回答
0

我对函数的工作方式有误。我希望分隔符变成数组的空节点。但是 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]

我假设分隔符始终位于每个字符串的末尾,但不在最后一个节点中。我的循环运行良好。知道使用哪个分隔符是另一场战斗。

非常感谢!!

于 2013-04-19T06:11:44.657 回答