微信公众号实现-实现简单的四则运算让公众号支持算术
对四则运算使用正则表达式匹配,然后进行计算的过程:
/**
* 计算处理
* @param keyword
* @param fromUsername
* @param toUsername
* @param time
* @param splitWord
* @return
*/
private String mathHandle(String keyword,String fromUsername, String toUsername, String time){
/* 只是为了苦逼地验证是否数学表达式 */
String answer = keyword.replaceAll(" ", "").toLowerCase().replaceAll("x", "*").replaceAll("\\?", "");
boolean isValid = false;// 有效表达式
Matcher matcher = null;
if (!answer.endsWith("*") && !answer.endsWith("+")){
Pattern pattern=Pattern.compile("^(\\(?[-+*x/%^&|~]?(>>>)?(>>)?(<<)?\\(?\\d+(\\.\\d+)?\\)?)+(.+)?$$");
matcher=pattern.matcher(answer);
if (matcher.find()){
String temp = matcher.group(matcher.groupCount());
answer = temp != null ? RegExMatcher.regexReplace(answer, temp, "") : answer;
pattern = Pattern.compile("[-+]?\\d+(\\.\\d+)?");
isValid = !pattern.matcher(answer).matches();// 不是纯数字,为有效
}
}
if (isValid){
Double d = Calculate.caculate(answer);
if (d != null){
String[] ans = {"这还用算?我一看就是:","眉头一皱,答案是:","张口就来:","简单^^,等于","so easy! 结果是:"};
answer = ans[new Random().nextInt(ans.length)] + Double.toString(d);
}else
answer = "天啊噜,不认识这个算式,教教我!";
}else
return null; // 返回null退出当前模式
// 记录聊天日志
ChatLog.logRecord(new Object[]{fromUsername,"",toUsername,keyword,answer});
return this.handleMsgText(answer, fromUsername, toUsername, time, WeiXinHandler.msgTypeText);
}
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《微信公众号实现-实现简单的四则运算让公众号支持算术》
本文地址:http://www.xiupu.net/archives-7478.html
关注公众号:
微信赞赏
支付宝赞赏