在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中是如何变化的?
你怎么能把一个单词分成它的组成字母?
代码示例不起作用
class Test {
public static void main( String[] args) {
String[] result = "Stack Me 123 Heppa1 oeu".split("\\a");
// output should be
// S
// t
// a
// c
// k
// M
// e
// H
// e
// ...
for ( int x=0; x<result.length; x++) {
System.out.println(result[x] + "\n");
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题似乎在于角色\\a.它应该是[A-Za-z].
我需要将字符串拆分为字符对,但字符对重叠。例如,我有一个 string Testing,我想要输出:
[Te, es, st, ti, in, ng]
Run Code Online (Sandbox Code Playgroud)
我尝试了一些东西,String.split但没有得到正确的输出:
String s = "Testing";
System.out.println(java.util.Arrays.toString(s.split("(?<=\\G..)")));
Run Code Online (Sandbox Code Playgroud)
这给了我:
[Te, st, in, g]
Run Code Online (Sandbox Code Playgroud)
谁能帮我?
我试图将一个字符串拆分成一个字符串数组,问题是.split()返回一个空元素.("test").split会回来的["","t","e","s","t"].
此问题中的解决方案将字符串拆分为字符串数组解决了问题(使用.split("(?!^)")).
但是我仍然无法理解为什么会这样,并且我不会使用一段我无法理解的代码,因为它完成了工作.
我读过这两页http://www.regular-expressions.info/lookaround.html和http://ocpsoft.org/opensource/guide-to-regular-expressions-in-java-part-2/约负面的预测仍然无法理解.有人可以澄清一下吗?
我正在尝试将String的字符拆分为String数组.我在这里找到了解决方案.
解决方案是完美的,但我没有得到如何.split("(?!^)")工作.我熟悉split()方法的基础知识.有人可以提供解释吗?
我只是想知道是否有人能为我回答一个问题?是否可以采用8个字母的字符串变量,然后将每个字母放入char数组?
例如:
String str;
str = "ABCDEFGH";
Run Code Online (Sandbox Code Playgroud)
你能把这个字符串变量分成8个字符的数组吗?
更新:
char [] charArray = str.toCharArray();
将会这样做
完全相同的问题,在这里回答:将
字符串拆分为字符串数组