不知道你说的没有实现功能,是没有得出总的价格还是怎么回事,我就假设是如此了。 
[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等。 |