相关疑难解决方法(0)

为什么在Java 8 split中有时会在结果数组的开头删除空字符串?

在Java 8之前我们拆分空字符串之类的

String[] tokens = "abc".split("");
Run Code Online (Sandbox Code Playgroud)

分裂机制会在标有的地方分开 |

|a|b|c|
Run Code Online (Sandbox Code Playgroud)

因为""每个字符前后都有空格.因此,它最初将生成此数组

["", "a", "b", "c", ""]
Run Code Online (Sandbox Code Playgroud)

然后将删除尾随的空字符串(因为我们没有明确地为limit参数提供负值),所以它最终会返回

["", "a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)

在Java 8中,拆分机制似乎已经发生了变化.现在我们用的时候

"abc".split("")
Run Code Online (Sandbox Code Playgroud)

我们将得到["a", "b", "c"]数组,而不是["", "a", "b", "c"]看起来像开始时的空字符串也被删除.但是这个理论失败了,例如

"abc".split("a")
Run Code Online (Sandbox Code Playgroud)

在start时返回带有空字符串的数组["", "bc"].

有人可以解释这里发生了什么,以及这些案例的拆分规则在Java 8中是如何变化的?

java regex split java-8

107
推荐指数
3
解决办法
3万
查看次数

Java由一个连续的字符分割

我有以下示例,以更好地解释我正在尝试做什么:

String text = "a,b,,,,c,,";
String[] split = text.split(",");
for(int i=0;i<split.length;i++){
    System.out.println("I = "+i+" "+split[i]);
}
Run Code Online (Sandbox Code Playgroud)

输出是:

I = 0 a

I = 1 b

I = 2 

I = 3 

I = 4 

I = 5 c
Run Code Online (Sandbox Code Playgroud)

但是,我想要的是获得一个大小为8的数组,包含:

I = 6 

I = 7
Run Code Online (Sandbox Code Playgroud)

当然,最后两个元素将是空字符串,但对我来说它是必不可少的.此外,我认为拥有它们是合乎逻辑的.我的意思是,如果我有:

String text = "a,b,,,,c,,d";
Run Code Online (Sandbox Code Playgroud)

结果将是一个大小为8的数组,我不认为这两个例子之间有很大的不同.

java string split

19
推荐指数
1
解决办法
658
查看次数

Java使用负前瞻将字符串拆分为字符

我试图将一个字符串拆分成一个字符串数组,问题是.split()返回一个空元素.("test").split会回来的["","t","e","s","t"].

此问题中的解决方案将字符串拆分为字符串数组解决了问题(使用.split("(?!^)")).

但是我仍然无法理解为什么会这样,并且我不会使用一段我无法理解的代码,因为它完成了工作.

我读过这两页http://www.regular-expressions.info/lookaround.htmlhttp://ocpsoft.org/opensource/guide-to-regular-expressions-in-java-part-2/约负面的预测仍然无法理解.有人可以澄清一下吗?

java regex string split

2
推荐指数
1
解决办法
1265
查看次数

标签 统计

java ×3

split ×3

regex ×2

string ×2

java-8 ×1