猿问
下载APP

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

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

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

String a = "123abc345def";

结果如下:

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

但是我完全不知道如何才能实现这一目标。请有人帮帮我吗?我尝试在线搜索类似的问题,但是在搜索中正确地表达它是非常困难的。

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


慕侠2389804
浏览 47回答 3
3回答

慕莱坞5435954

您可以尝试拆分(?<=\D)(?=\d)|(?<=\d)(?=\D),例如:str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");它匹配数字和非数字之间的位置(以任何顺序)。(?<=\D)(?=\d)- 匹配非数字(\D)和数字(\d)之间的位置(?<=\d)(?=\D)&nbsp;- 匹配数字和非数字之间的位置。

catspeake

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

绝地无双

你可以试试这个:Pattern&nbsp;p&nbsp;=&nbsp;Pattern.compile("[a-z]+|\\d+");Matcher&nbsp;m&nbsp;=&nbsp;p.matcher("123abc345def");ArrayList<String>&nbsp;allMatches&nbsp;=&nbsp;new&nbsp;ArrayList<>();while&nbsp;(m.find())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;allMatches.add(m.group());}结果(allMatches)将是:["123",&nbsp;"abc",&nbsp;"345",&nbsp;"def"]
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答