不知道你说的没有实现功能,是没有得出总的价格还是怎么回事,我就假设是如此了。
[Java] 纯文本查看 复制代码 import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Demo {
public static void main(String[] args) {
String message= "老菜馆\r\n==菜名============价格=======\r\n大拉皮\t\t21.90\r\n鱼香肉丝\t\t22.80\r\n巫山烤鱼\t\t58.80 \r\n===========================";
System.out.println(message);
System.out.println("-----");
String new_message = message.replace("=", "");
new_message = new_message.replace("\t\t", " ");
new_message = new_message.replace("\r\n", "");
System.out.println(new_message);
System.out.println("---");
double all = 0;
Pattern p = Pattern.compile("\\d+\\.?\\d*");
Matcher m = p.matcher(new_message);
while( m.find() ) {
String res = m.group();
Double d = Double.valueOf(res);
all += d;
}
System.out.println(all);
}
}
你没有得出总价,是因为你把\r\n去掉后,数字后面是有汉字的,通过\\t分割字符串得到数组,数字后面仍然有汉字,是不能和你的regex匹配的,而且,即使数组中某个元素只是价格字符串,你的regex也不能满足要求,因为中间是有小数点的。
另外,在要用到正则的时候,需要把单右斜杠\转义才行,因为他自身就是转义字符,在字符串中,要表示右斜杠本身,也是需要转义的,因为它是特殊字符。我们平时用的时候,它都是结合其他需要转义的字符一起使用的,比如\r,\t,\n等。 |