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)代码>。这不符合模式,可能会再次慢一点。