这两天遇到一个问题,前端需要把包含数字和中文的字符串中的数字以红色显示,楼主查了一些关于正则表达式的东西,才得以解决
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regex {
public static void main(String[] args) {
//满100减10 打8.5折 8折
String s = "8折";
Pattern p = Pattern.compile("[\\u4e00-\\u9fa5]+|\\d+\\.+\\d+|\\d+");
Matcher m = p.matcher( s );
Pattern pattern = Pattern.compile("-?[0-9]+(\\.[0-9]+)?");
StringBuilder title = new StringBuilder();
while ( m.find() ) {
String group = m.group();
if(pattern.matcher(group).matches()){
title.append("<span style=\"color:red;\">");
title.append(group);
title.append("</span>");
}else{
title.append(group);
}
}
System.out.println(title.toString());
}
}
先用正则表达式把数字(整数和浮点)和中文区分开,然后在用正则对数字类型进行匹配,添加红色显示属性,有不到之处尽请提出