import java.util.regex.Pattern
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
String str = "2005a-3.pt.5"
Pattern p = Pattern.compile("[(\\d[^\\d])[([^\\d]\\d)][\\d][^\\d]]+")
Matcher m = p.matcher(str)
String resultStr = ""
while(m.find()) {
if(m.group().matches("\\d+\\b|[^\\d]+\\b")) {
resultStr = resultStr +m.group()+","
}
else {
p = Pattern.compile("\\d+|[^\\d]+")
Matcher mm = p.matcher(m.group())
while(mm.find()) {
resultStr = resultStr+mm.group()+","
}
}
}
System.out.println(resultStr.substring(0, resultStr.length()-1))
}
}
上面是用正则的,其实你可以不用正则,而是去遍历这个字符串,然后比较他们的ASCII码是不是数字。
这里主要用到了StringBuffer以及string的append方法、substring方法。大致思路如下:
str4为目标字符串,及最后的结果会被存放进str4
我们用stringbuffer类中的函数append来处理字符串数组str1,并通过逗号来分割,最后用tostring函数,将其转变成字符串的形式。
最后用substring来对结果进行截取,得到最后需要的形式:abc,123,45
下图为具体的代码段:
扩展资料:
在java中,关于字符数组、字符串分割截取拼接处理的一些常用类及方法:
StringBuffer的常用方法:
StringBuffer类中的方法主要偏重于对于字符串的变化,例如追加、插入和删除等,这个也是StringBuffer和String类的主要区别。
1、append方法
该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变,例如:
这样对象sb的值将变成”abctrue”。
2、substring方法
substring()
方法返回字符串的子字符串。
以上就会截字符串的[4,10)位,其中从0开始,包括第四位,不包括第十位。