一个字符串处理

减肥啊啊啊啊啊 2012-10-25 04:37:07

给出一个不固定的字符串 含有数字(有会带小数点)加字母

要求分隔出来数字部分 和字母部分、

貌似要正则、不太会喔、

String str = "0.12a";

结果:

0.12 a

如果碰到数字夹字母情况

String str = "0.12a0.12b";

结果:

0.120.12 ab



...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
#1和#4两位都 可以、每人各50分、

现在改了需求、

数字加字符加数字的、 从左往右查碰到字符 前面数字算一组 字符到最后算一组、

String ex = " 0.12a1248bawd";

结果分隔后是

numb = 0.12 和 str = a1248bawd 这样的、
String numb = "";
String string = "";
Pattern pat = Pattern.compile("[^\\d+(.\\d*)?]");
Matcher matcher=pat.matcher(ex);
if(matcher.find()){
String str = matcher.group();//第一个查询到的字符
numb = ex.substring(0,ex.indexOf(str));
string = ex.substring(ex.indexOf(str),ex.length());
}



谢谢各位
VS_2010 2012-10-25
  • 打赏
  • 举报
回复
我刚才也写了一个小例子,不过没有正则表达式来的简单.

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
String number = ".0123456789";
String str = "0.12abc1.1";
char[] chars = str.toCharArray();
String numberPart = "";
String stringPart = "";
for(int i = 0; i < chars.length; i++) {
char c = chars[i];
if(number.indexOf(String.valueOf(c)) >= 0) {
numberPart += c;
} else {
stringPart += c;
}
}
System.out.println("===NumberPart===" + numberPart);
System.out.println("===stringPart===" + stringPart);
}
}
  • 打赏
  • 举报
回复
把每个字节都拿出来判断ascii码也可以来区分
Cactus_hxk 2012-10-25
  • 打赏
  • 举报
回复
也可以这样!
System.out.println("0.12a0.12b".replaceAll("[a-z]", ""));
System.out.println("0.12a0.12b".replaceAll("[^a-z]", ""));
Cactus_hxk 2012-10-25
  • 打赏
  • 举报
回复
System.out.println("0.12a0.12b".replaceAll("[a-z]", ""));

System.out.println("0.12a0.12b".replaceAll("[0-9]", "").replaceAll("\\.", ""));

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧