有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java字符串拆分函数

在java文档中^{}

我们可以找到以下例子:

The string "boo:and:foo", for example, yields the following results with these expressions

Regex          Result

o                   { "b", "", ":and:f" }

第二个结果""来自哪里?在{}和{}之间,或者{}和{}之间


共 (2) 个答案

  1. # 1 楼答案

    当您使用分隔符o并且两个分隔符相邻时,它会生成一个空字符串。例如,如果你有一个字符串foo::bar并用:分割它,你会得到{"foo", "", "bar"},因为分割时::之间的空间被视为空字符串

    如果您想在没有任何空字符串的情况下拆分,请查看this question

    结束空字符串

    When split is given zero or no limit argument it discards trailing empty fields

    参考:Java: String split(): I want it to include the empty strings at the end

  2. # 2 楼答案

    请注意,对于正则表达式引擎,字符之间的位置也很重要。因此,正则表达式引擎将boo:and:foo字符串视为

    <EMPTY>b<EMPTY>o<EMPTY>o<EMPTY>:<EMPTY>a<EMPTY>n<EMPTY>d<EMPTY>:<EMPTY>f<EMPTY>o<EMPTY>o<EMPTY>
                   ^between^                                                       ^between^
    

    由于第一个^between^不在字符串的末尾,因此split在结果中保留空位置(字符串)。由于默认情况下int limit参数为0,因此结尾处的空元素将被删除。如果传递-1(非正值),则结果数组中会出现所有尾随的空元素。参见String#split参考资料