在java中替换String(在某些情况下)

时间:2015-08-29 18:44:01

标签: java string replace

如果我有例如String a = "8sin(30)+sin(40) + 3sin(30)" String b = a;我怎么能只替换第一个" sin"第三个用于" * sin",维护第二个" sin"相同? 换句话说,我怎样才能在特定情况下替换部分字符串?

2 个答案:

答案 0 :(得分:2)

如果您要替换之前有号码的sin,您可以使用类似

的内容
yourString = yourString.replaceAll("(\\d+)sin","$1*sin");

replaceAll使用代表

的正则表达式
  • \\d+来自一个或多个数字字符的字符串构建(例如012321 ...) - 我们会将此数字放在第1组
  • sin字面意思。

作为替代,我们将通过$1

重新使用第1组的匹配

演示:

String a = "8sin(30)+sin(40) + 3sin(30)";
System.out.println(a.replaceAll("(\\d)+sin","$1*sin"));

输出:8*sin(30)+sin(40) + 3*sin(30)

您还可以使用look-behind检查sin之前是否有任何数字

String a = "8sin(30)+sin(40) + 3sin(30)";
System.out.println(a.replaceAll("(?<=\\d)sin","*sin"));

答案 1 :(得分:0)

您可能正在寻找String的replaceFirst(String regex, String replacement)方法。

您可以使用以下正则表达式:

[0-9]+sin

Demo

b=b.replaceFirst("[0-9]+sin","*sin");

您也可以使用substring(int beginIndex)方法。