我一直在尝试将此数学函数替换x^2*sqrt(x^3)
为pow(x,2)*Math.sqrt(pow(x,3))
所以这是正则表达式
/([0-9a-zA-Z\.\(\)]*)^([0-9a-zA-Z\.\(\)]*)/ pow(\1,\2)
它在 ruby 中工作,但我找不到在 java 中的方法,我尝试了这个方法
String function= "x^2*sqrt(x^3)";
Pattern p = Pattern.compile("([a-z0-9]*)^([a-z0-9]*)");
Matcher m = p.matcher(function);
String out = function;
if(m.find())
{
System.out.println("GRUPO 0:" + m.group(0));
System.out.println("GRUPO 1:" + m.group(1));
out = m.replaceFirst("pow(" + m.group(0) + ", " + m.group(1) + ')');
}
String funcformat = out;
funcformat = funcformat.replaceAll("sqrt\\(([^)]*)\\)", "Math.sqrt($1)");
System.out.println("Return Value :"+ funcion );
System.out.print("Return Value :"+ funcformat );
但仍然不起作用,输出是:pow(x, )^2*Math.sqrt(x^3)
正如我之前所说的,应该是pow(x,2)*Math.sqrt(pow(x,3))
. 谢谢!!