java中怎样将把字母和数字组成的字符串才分开??

例如 将“abcd0123“拆分成"abc" 和"0123"
2025-04-17 17:00:52
推荐回答(5个)
回答1:

用正则表达式匹配
Pattern p_number = Pattern.compile("\\d+");//匹配数字
Pattern p_char = Pattern.compile([a-zA-Z]+);//匹配字母
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

回答2:

用字符串的toCharArray()方法把字符串变成char字符数组,然后遍历数组,比较char的ascII码,就可以区分字母和数字了

回答3:

String s = "abcd0123".replaceAll("\\d+", "");
String n = "abcd0123".replaceAll("\\D+", "");

回答4:

/**
*
* @param source 需要处理的字符串
* @return
*/
public static List splitLetterAndNumber(String source)
{
List result = new ArrayList();
char[] carr = source.toCharArray();
int lastLetter = 0;//记录上一个字符是字母还是数字,1是字母,2是数字
StringBuilder sb = new StringBuilder();
for(Character c : carr)
{
if(lastLetter == 0)
{
sb.append(c);
lastLetter = Character.isDigit(c)?2:1;
continue;
}
if(Character.isDigit(c))
{
if(lastLetter==2)
{
sb.append(c);
}
else
{
result.add(sb.toString());
sb = new StringBuilder();
sb.append(c);
}
lastLetter = 2;
}
else
{
if(lastLetter==1)
{
sb.append(c);
}
else
{
result.add(sb.toString());
sb = new StringBuilder();
sb.append(c);
}
lastLetter = 1;
}
}
return result;
}

最后返回的List就是装的分隔后的字符串

回答5:

String s = "abcd0123".replaceAll("\\d+", "");
String n = "abcd0123".replaceAll("\\D+", "");

\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。