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

标签 java arrays regex string split

我想在每次出现 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/

相关文章:

java - 如何将文本链接设置为实际 URL 而不是 HTML 中的文本标记

java - 基本帮助 数组和链表

PHP动态数组路径访问

c - 将 char * 数组中的字符串分配给另一个 char * 数组

python - 在正则表达式中使用 sub() 方法时如何避免突变?

regex - 匹配基本 url 正则表达式

regex - 如何使用正则表达式查找和替换实例

java - 安卓短信管理器

java - 匿名类与实现接口(interface)的编程约定

java - 检查对 Java servlet 的 HTTP POST 请求的内容类型