首页 > 解决方案 > 如何拆分由字母和整数组成的字符串

问题描述

我有一个由字母后跟数字组成的字符串,例如

String s = "C34M78N8X";

我想用它旁边的数字分割每个字母,这样就可以了

{"C34" "M78" "N8" "X"} //in that order

关于我可以使用的任何类方法的任何String想法Integer?我是java的初学者,所以我正在尝试学习不同的东西。我到处研究,找不到任何东西。提前致谢

标签: javastringsplit

解决方案


您想在两个非数字字符之间拆分。

您可以使用以下任意两项来做到这一点:

  • ?!\\d)数字的零宽度负前瞻
  • (?=\\D) 非数字的零宽度正前瞻

所以使用(?!\\d)(?=\\D)正则表达式简单地说,“匹配你看到一个非数字后跟一个非数字的区域。

String[] data = { "ABCDEF","A12345","A1B2C3D4","AX3YM67", "A1233BB1233", "A3D456F6D" };
List<List<String>> lists = new ArrayList<>();
for (String str : data) {
    String[] st = str.split("(?!\\d)(?=\\D)");
    lists.add(Arrays.asList(st));
}

for(int i = 0; i < data.length; i++) {
    System.out.println(data[i] + " --> " +  lists.get(i));
}

印刷

ABCDEF --> [A, B, C, D, E, F]
A12345 --> [A12345]
A1B2C3D4 --> [A1, B2, C3, D4]
AX3YM67 --> [A, X3, Y, M67]
A1233BB1233 --> [A1233, B, B1233]
A3D456F6D --> [A3, D456, F6, D]


推荐阅读