gpt4 book ai didi

Java按alphabeta char拆分在数组中创建一个空值

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:46:13 24 4
gpt4 key购买 nike

我想在每次出现 alpha-beta 字符时拆分我的字符串。

例如:

"s1l1e13" 到一个数组:["s1","l1","e13"]

当尝试使用正则表达式进行简单拆分时,我得到了一些奇怪的结果:

testStr = "s1l1e13"
Arrays.toString(testStr.split("(?=[a-z])"))

给我数组:

["","s1","l1","e13"]

如何在没有空数组元素的情况下创建拆分?

我尝试了更多的东西:

testStr = "s1"
Arrays.toString(testStr.split("(?=[a-z])"))

返回当前数组:["s1"]

但是当尝试使用子字符串时

testStr = "s1l1e13"
Arrays.toString(testStr.substring(1).split("(?=[a-z])")

我得到返回 ["1","l1","e13"]

我错过了什么?

最佳答案

Lookahead 标记了 az 任何字符之前的每个位置;标记以下位置:

 s1 l1 e13
^ ^ ^

因此,通过仅使用 Lookahead 进行拆分,它返回 ["", "s1", "l1", "e13"]

您可以在此处使用Negative Lookbehind。这向后看是否有不是字符串的开头。

String s = "s1l1e13";
String[] parts = s.split("(?<!\\A)(?=[a-z])");
System.out.println(Arrays.toString(parts)); //=> [s1, l1, e13]

关于Java按alphabeta char拆分在数组中创建一个空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23996609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com