String.split不计算最后的空元素

时间:2016-09-20 02:36:24

标签: regex groovy

请看以下2个例子。如何确保第二个也打印4?

String s="a|b|c|d"
println(s.split("\\|").length)
//prints 4

s="a|b||"​​​​​​​​​​​​
println(s.split("\\|").length)​
//prints 2

2 个答案:

答案 0 :(得分:2)

要保留空标记,请使用split with limit = -1

println(s.split("\\|", -1).length)​

答案 1 :(得分:-2)

Split不允许在迭代时使用空值。因此,以下代码将起作用。

int counter = 0;
    for(int i = 0 ; i < s.length();i++)
    {
        if(s.charAt(i) == '|')
        {
            counter++;

        }
    }
    System.out.println(counter);