C 知道
收起
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { String str = "8+sqrt(4)+5+sqrt(9)4"; test(str); } public static void test(String str) { String pattern = "(?<=sqrt\\().+?(?=\\))"; // 创建 Pattern 对象 Pattern r = Pattern.compile(pattern); // 创建 matcher 对象 Matcher m = r.matcher(str); // 匹配到数据 while (m.find()) { // m.group(0) 取到括号内的数字 // Math.sqrt进行开方 double value = Math.sqrt(Double.parseDouble(m.group(0))); // 进行替换 str = str.replace("sqrt(" + m.group(0) + ")", String.valueOf((int) value)); } System.out.println(str); } }
是sqrt(9)*4
如果是8+sqrt(4)+5+sqrt(9+8*8+6+21)4那么这个字符串如何转换成8+4+5+214呢?
你主要问题是把数开方后替换回去,是不是 乘以4 不影响代码逻辑。
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!