首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StringSplitOptions.None的工作方式不符合预期

StringSplitOptions.None的工作方式不符合预期
EN

Stack Overflow用户
提问于 2013-04-18 18:46:26
回答 3查看 1.5K关注 0票数 0

我正在尝试使用两个分隔符将字符串转换为string[],并且我希望结果string[]节点中的分隔符为空字符串

代码语言:javascript
复制
string source = "(('CO.IN'.bit = C) OR ('CO.IN'.bit = V))";
char[] delimiters = new char[] { '(', ')' };
string[] parts = source.Split(delimiters,StringSplitOptions.None);

string[]部件的预期结果为:

代码语言:javascript
复制
[null]
[null]
'CO.IN'.bit = C
[null]
' OR '
[null]
'CO.IN'.bit = V
[null]
[null]

但得到的结果是:

代码语言:javascript
复制
[null]
[null]
'CO.IN'.bit = C
' OR '
'CO.IN'.bit = V
[null]
[null]

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

有谁能帮帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-18 18:48:50

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

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

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

票数 6
EN

Stack Overflow用户

发布于 2013-04-18 18:48:28

输出是OK的。请注意OR前后的空格。期望值不是你说的那样。输出" OR“是"OR”,而不是“OR”。

票数 4
EN

Stack Overflow用户

发布于 2013-04-19 14:11:45

我对函数的工作方式的理解是错误的。我期望分隔符转换为数组的空节点。但是Dirk帮助我理解了它的作用。

得到的结果是:

代码语言:javascript
复制
[null]
[null]
'CO.IN'.bit = C
' OR '
'CO.IN'.bit = V
[null]
[null]

这意味着定界符位于字符串之间。

代码语言:javascript
复制
[null]
Delimiter
[null]
Delimiter
'CO.IN'.bit = C
Delimiter
' OR '
Delimiter
'CO.IN'.bit = V
Delimiter
[null]
Delimiter
[null]

我假设分隔符总是在每个字符串的末尾,但不是在最后一个节点。我的循环运行得很好。知道使用哪个分隔符是另一回事。

非常感谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16080843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档