【问题标题】:ruby gsub function in java, replaceAll maybe?java中的ruby gsub函数,replaceAll可能吗?
【发布时间】:2013-05-09 04:31:05
【问题描述】:

我一直在尝试翻译这个

    funcFormat = funcFormat.gsub(/sqrt\((.*)\)/,'Math.sqrt(\1)')

java中的这个

    funcFormat = funcFormat.replaceAll("sqrt((.*))","Math.sqrt($1)"); 

或者有没有办法将数学格式化为文本?例如:

2x^2sqrt(x^3/2) 到 2xpow2sqrt(xpow3/2)

谢谢,顺便说一下,我是这个网站的新手。

【问题讨论】:

  • /sqrt\((.*)\)/ 是一个正则表达式。
  • 欢迎 :) ^ -> pow 不是和第一个完全一样的情况吗?只是更换?

标签: java ruby regex string replace


【解决方案1】:

您可以使用以下表达式:

funcFormat = funcFormat.replaceAll("sqrt\\(([^)]*)\\)", "Math.sqrt($1)");

虽然看起来你在这里不需要正则表达式。一个简单的

funcFormat = funcFormat.replace("sqrt", "Math.sqrt");

似乎对您的情况同样有效。

【讨论】:

  • 哦,谢谢!,是的,我还需要 sqrt 后括号之间的函数
【解决方案2】:

虽然给定的示例并不真正需要正则表达式,但我的需要。 如果您确实需要正则表达式,您正在寻找的方法是String.replaceAll(正如您所提到的)。 Ruby 的String#sub 对应的java 版本是String.replaceFirst

总结:

              Ruby              |               Java
---------------------------------------------------------------------------------------
String#sub (regex, replacement) | String.replaceFirst(String regex, String replacement)
String#gsub(regex, replacement) | String.replaceAll  (String regex, String replacement)

【讨论】:

    猜你喜欢
    • 2010-12-31
    • 2020-12-25
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2018-08-17
    相关资源
    最近更新 更多