Java 如何替换字符串中的所有{!XXX}?
我有多个{!XXX}短语的字符串。例如: Kumar gaurav{!str1}只是{!str2},adasdas{!str3}Java 如何替换字符串中的所有{!XXX}?,java,salesforce,apex,Java,Salesforce,Apex,我有多个{!XXX}短语的字符串。例如: Kumar gaurav{!str1}只是{!str2},adasdas{!str3} 我需要用相应的str替换所有的{!str}值,如何替换我字符串中的所有{!str}?您可以使用模式和匹配器,它提供了查询字符串中未知数量元素的方法,并结合\{!str d\}正则表达式这将允许您根据标签分解文本 例如 String text = "All that {!str1} is {!str2}"; Map<String, String> value
我需要用相应的str替换所有的{!str}值,如何替换我字符串中的所有{!str}?您可以使用
模式
和匹配器
,它提供了查询字符串中未知数量元素的方法,并结合\{!str d\}正则表达式
这将允许您根据标签分解文本
例如
String text = "All that {!str1} is {!str2}";
Map<String, String> values = new HashMap<>(25);
values.put("{!str1}", "glitters");
values.put("{!str2}", "gold");
Pattern p = Pattern.compile("\\{!str\\d\\}");
Matcher matcher = p.matcher(text);
while (matcher.find()) {
String match = matcher.group();
text = text.replaceAll("\\" + match, values.get(match));
}
System.out.println(text);
你也可以使用像
int previousStart = 0;
StringBuilder sb = new StringBuilder();
while (matcher.find()) {
String match = matcher.group();
int start = matcher.start();
int end = matcher.end();
sb.append(text.substring(previousStart, start));
sb.append(values.get(match));
previousStart = end;
}
if (previousStart < text.length()) {
sb.append(text.substring(previousStart));
}
int-previousStart=0;
StringBuilder sb=新的StringBuilder();
while(matcher.find()){
String match=matcher.group();
int start=matcher.start();
int end=matcher.end();
sb.append(text.substring(previousStart,start));
sb.append(value.get(match));
上一次开始=结束;
}
如果(上一个开始
这消除了循环中的
字符串创建,更依赖于匹配的位置来剪切标记周围的原始文本,这让我更高兴;) 使用这个正则表达式,很简单
String string="hello world {!hello}";
string=string.replaceAll("\\{!(.*?)\\}", "replace");
System.out.println(string); //this will print (hello world replace)
请尝试Java中的replaceAll()方法,展示您的努力。通过参考相关文档,可以轻松完成此任务。
String string="hello world {!hello}";
string=string.replaceAll("\\{!(.*?)\\}", "replace");
System.out.println(string); //this will print (hello world replace)