当我使用String.split()方法时,为什么有时会得到空字符串?例如,如果我这样做:
"(something)".split("\\W+")
然后,返回值的第一个元素将是一个空字符串。另外,从文档的例子(如看到这里)没有意义无论是。
Regex Result
: { "boo", "and", "foo" }}
o { "b", "", ":and:f" }}
为什么将“:”用作分隔符,没有空字符串,但是有“ o”吗?
和:
"(something)".split("\\W+")
假设分隔符位于字段之间,那么最终得到的是:
"" "something" "" <- fields
( ) <- delimiters
您可以通过先修剪字符串以删除任何前导或尾随定界符来解决此问题,例如:
"(something)".replaceAll("^\\W*","").replaceAll("\\W*$","").split("\\W+")
用类似的东西:
"boo:and:foo".split("o", 0)
你会得到:
"b" "" ":and:f" <- fields
o o <- delimiters
因为您有连续的定界符(当定界符为时不存在":"
),因此认为它们之间有一个空字段。
而且您之所以没有结尾处的空白字段,是因为foo
该限制为零。在这种情况下,尾随的(不是前导的)空白字段将被删除。
如果您还希望摆脱中间的空白字段,则可以将其"o+"
用作分隔符,因为这样会将贪婪的吸收性o
字符吸收到单个分隔符中。您还可以使用replaceAll
上面显示的技巧来消除前导的空字段。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句