如何在字母和数字之间(或数字和字母之间)拆分字符串?

新手上路,请多包涵

我正在尝试找出一种在 java 中拆分字符串的方法,该字符串遵循如下模式:

 String a = "123abc345def";

结果应如下所示:

 x[0] = "123";
x[1] = "abc";
x[2] = "345";
x[3] = "def";

但是,我完全不知道如何实现这一目标。请问有人可以帮我吗?我曾尝试在网上搜索类似的问题,但是很难在搜索中正确地表达它。

请注意: 字母和数字的数量可能会有所不同(例如,可能会有这样的字符串 ‘1234a5bcdef’)

原文由 user843337 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 771
2 个回答

您可以尝试拆分 (?<=\D)(?=\d)|(?<=\d)(?=\D) ,例如:

 str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");

它匹配数字和非数字之间的位置(以任何顺序)。

  • (?<=\D)(?=\d) - 匹配非数字( \D )和数字( \d )之间的位置
  • (?<=\d)(?=\D) - 匹配数字和非数字之间的位置。

原文由 Qtax 发布,翻译遵循 CC BY-SA 4.0 许可协议

怎么样:

 private List<String> Parse(String str) {
    List<String> output = new ArrayList<String>();
    Matcher match = Pattern.compile("[0-9]+|[a-z]+|[A-Z]+").matcher(str);
    while (match.find()) {
        output.add(match.group());
    }
    return output;
}

原文由 nullpotent 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题