如果我有例如String a = "8sin(30)+sin(40) + 3sin(30)"
String b = a;
我怎么能只替换第一个" sin"第三个用于" * sin",维护第二个" sin"相同?
换句话说,我怎样才能在特定情况下替换部分字符串?
答案 0 :(得分:2)
如果您要替换之前有号码的sin
,您可以使用类似
yourString = yourString.replaceAll("(\\d+)sin","$1*sin");
replaceAll
使用代表
\\d+
来自一个或多个数字字符的字符串构建(例如0
,12
,321
...) - 我们会将此数字放在第1组sin
字面意思。作为替代,我们将通过$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
b=b.replaceFirst("[0-9]+sin","*sin");
您也可以使用substring(int beginIndex)方法。