Java 用于替换字符串中的单词的正则表达式

Java 用于替换字符串中的单词的正则表达式,java,Java,我所要做的就是动态替换,即使我不知道哪个字符串会到达这两个%符号之间,也会被替换的值是动态到达的 例如: this is %XXXX% 现在我想替换2%符号之间的单词 this is tttt 请建议对于相同的我必须使用哪个正则表达式,以及您希望使用正则表达式的任何特定原因。您可以使用String函数replaceAll将单词替换为所需的单词。使用正则表达式的任何特定原因。您可以使用String函数replaceAll将单词替换为所需的单词 String s[] = {"this is %a

我所要做的就是动态替换,即使我不知道哪个字符串会到达这两个%符号之间,也会被替换的值是动态到达的

例如:

this is %XXXX%
现在我想替换2%符号之间的单词

this is tttt

请建议对于相同的

我必须使用哪个正则表达式,以及您希望使用正则表达式的任何特定原因。您可以使用
String
函数
replaceAll
将单词替换为所需的单词。

使用正则表达式的任何特定原因。您可以使用
String
函数
replaceAll
将单词替换为所需的单词

String s[] = {"this is %animal%", "this is %bird%"};
for (int i = 0; i < s.length; i++) {
    s[i].replaceAll("%animal%", "cow");
    s[i].replaceAll("%bird%", "dove");
    System.out.println(s[i]);
}
如果您确实知道%%之间的单词,请使用
oldString.replaceAll(“%”+搜索+“%”,replacement)

Edit2:递归更有趣。如果您确定每个字符串只有一个%%word,请直接在第13行返回
newString

编辑3: 使用正则表达式:

private static final Pattern pattern = Pattern.compile("%[^%]*%"); 
public static String replacePercentageRegex(String oldString, String replacement) {
    Matcher matcher = pattern.matcher(oldString);
    return  matcher.replaceAll(replacement);
}
我不确定正则表达式版本的性能

如果您确实知道%%之间的单词,请使用
oldString.replaceAll(“%”+搜索+“%”,replacement)

Edit2:递归更有趣。如果您确定每个字符串只有一个%%word,请直接在第13行返回
newString

编辑3: 使用正则表达式:

private static final Pattern pattern = Pattern.compile("%[^%]*%"); 
public static String replacePercentageRegex(String oldString, String replacement) {
    Matcher matcher = pattern.matcher(oldString);
    return  matcher.replaceAll(replacement);
}

我不确定regex版本的性能。

甚至不需要
replaceAll(regex,replacement)
,它需要一个regex。。。只需使用
replace(old,replacement)
,它需要纯字符串。

甚至不需要
replaceAll(regex,replacement)
,它需要一个regex。。。只需使用
replace(old,replacement)
,它接受纯字符串。

word不是特定的,它可以是任意的……但只包含%%之间的内容。然后使用Java模式。该示例在文档中给出。因此,如果您想将
%animal%
替换为
cow
,只需输入
animal
cow
,则可以执行此str.replaceAll(“%”+param1+“%,param2));word不是特定的,它可能是任意的…但只包含%%之间的内容。然后使用Java模式。该示例在文档中给出。因此,如果您想将
%animal%
替换为
cow
,只需输入
animal
cow
,则可以执行此str.replaceAll(“%”+param1+“%,param2));是否定义了%animal%和%bird%的vakue。。或者在运行时传递它们。是否定义了%animal%、%bird%的vakue。。或者你在运行时通过它们。谢谢它能工作…你知道有没有替换相同的常规Exp?是的,可以用regex完成,但我怀疑它是否会带来任何形式的优势,除了以后更容易更改。请看,您将需要一个类似“%[^%]*%”的模式。请注意:正则表达式的速度大约是它的2-4倍。没那么糟。我刚刚发现了
oldString.replaceAll(“%[^%]*%”,replacement)。这没有抓住模式,可能又慢了一点。谢谢它能工作…你知道有没有替换相同的常规Exp吗?是的,可以用regex完成,但我怀疑它会带来任何形式的优势,除了以后更容易更改之外。请看,您将需要一个类似“%[^%]*%”的模式。请注意:正则表达式的速度大约是它的2-4倍。没那么糟。我刚刚发现了
oldString.replaceAll(“%[^%]*%”,replacement)。这不符合模式,可能会再次慢一点。