gpt4 book ai didi

Java 文本标签替换代码

转载 作者:行者123 更新时间:2023-12-02 07:52:35 24 4
gpt4 key购买 nike

在我看来,这似乎很简单......直到我坐下来开始打字。

无论如何,我的任务是编写一个方法,在字符串中查找“标签”,并适本地替换它们,输出结果字符串。函数声明类似于:

public String doStuff(String source, Map<Integer, String> replacementData)

这个想法是每个“标签”都是一个用“<<>>”包围的整数值(因此正则表达式类似于“.<<[0-9]+>>.”)。一旦在 source 中遇到这些标签之一,就应该从标签中获取标签中包含的整数,并且应该通过 replacementData.get(I) 替换该标签>

无论如何,我想有效地做到这一点。我只是不知道该怎么做。我查看了 Pattern 和 Matcher,我认为那不是正确的路线。我不想使用 String.indexOf 之类的东西,因为它效率低下(不是吗?)。

谢谢你的建议!

最佳答案

使用正则表达式模式和匹配器来实现这一点的方法是捕获所谓的组中的整数,然后用它来替换。您的问题的另一个有趣的部分是逐步替换。 appendReplacement method 的 javadoc 中描述了您需要执行的步骤顺序。

示例代码:

String str = "abc<<1>>def<<2>>ghi";
java.util.Map<Integer,String> replacementMap = new java.util.HashMap<Integer,String>() {
{
put(1," ONE ");
put(2," TWO ");
}
};
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("<<([0-9]+)>>");
java.util.regex.Matcher matcher = pattern.matcher(str);
int start = 0;
StringBuffer sb = new StringBuffer();
while(matcher.find()) {
matcher.appendReplacement(sb,replacementMap.get(Integer.parseInt(matcher.group(1))));
}
matcher.appendTail(sb);
System.out.println(sb.toString());

输出:abc ONE def 2 ghi

关于Java 文本标签替换代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10050498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com