当前位置: 首页 > 知识库问答 >
问题:

将文本中的字符串替换为HashMap中键的值

贺宝
2023-03-14

主要目标是用hashmap中的值替换字符串中的一些单词作为关键字(关键字是文本中的单词)。钥匙的格式不同。例如:主文本:“Lookahead和Lookahead,统称为Lookahead,是[0-23]断言”hashmap:{Lookahead=test1,Lookahead=test2,Lookahead=test3,[0-23]=newvalue}预期输出:“test1和test2,统称为test3,是newvalue断言”

我能够使字典,但替换部分是我需要帮助的地方。我不能像键一样替换[0-23]。作为替换所有doesnot考虑 - , [ 和]。

共有1个答案

郗欣嘉
2023-03-14

您可以执行以下操作:

mainText.replaceAll(java.util.regex.Pattern.quote(entry.getKey()), java.util.regex.Matcher.quoteReplacement(entry.getValue()))

调用java。util。正则表达式。图案quote将逐字处理任何特殊的正则表达式字符。调用java。util。正则表达式。Matcher。替换字符串上的quoteReplacement也会对具有一些特殊字符的替换字符串执行相同的操作。

它(几乎)都在Javadoc方法中:

Stringjava.lang.String.replaceAll(String regex,String替换)

将此字符串中与给定正则表达式匹配的每个子字符串替换为给定替换。调用str.replaceAll(regex,repl)形式的这个方法会产生与java表达式完全相同的结果。util。正则表达式。图案编译(regex)。匹配器(str)。replaceAll(repl)注意,替换字符串中的反斜杠()和美元符号($)可能会导致结果不同于将其视为文字替换字符串时的结果;见Matcher。全部替换。使用java。util。正则表达式。Matcher。如果需要,引用替换以隐藏这些字符的特殊含义。Parameters:regex要匹配该字符串的正则表达式replacement每次匹配要替换的字符串返回:结果字符串抛出:PatternSyntaxException-如果正则表达式的语法无效,因为:1.4另请参见:java。util。正则表达式。图案@spec JSR-51

 类似资料:
  • 问题内容: 我正在寻找一种替换文件中的字符串而不将整个文件读入内存的方法。通常我会使用Reader和Writer,例如以下内容: 但是,我想就地进行替换,并且不认为可以同时在同一文件上打开Reader和Writer。另外,我正在使用Java 1.4,因此无法访问NIO,扫描仪等。 谢谢唐 问题答案: 通常无法对文件进行“就地”替换,除非替换的长度与原始长度完全相同。否则,文件将需要增大,从而将所有

  • 我已经找到了几个有类似问题和有价值答案的主题,但我仍然在纠结这个: 我想用Jsoup解析一些html,这样我就可以替换,例如, 与 ,但仅当它出现在html的文本部分时,如果它是标签的一部分,则不会。所以,从这个html开始: 我想说的是: 我尝试了几种方法,这种方法使我更接近预期的结果: 但使用这种方法,我发现了两个问题: > 换行符在我引入的新元素之前和之后插入。这不是一个真正的问题,因为如果

  • 我试图开发一个由多个数组和文本视图组成的应用程序,我遇到了一个问题。 我有3个文本视图和2个数组。 我的一个数组包含句子。我的第一个问题是如何突出每个句子中的特定单词?例如:“这是我的第一个数组项”,我需要突出显示字符串中的一个单词,这样当它显示在文本视图1中时,它就会像这样出现..."这是我的第一个数组物品" 我的另一个数组包含单词。它们显示在textview2中,也应高亮显示。我的下一个问题是

  • 我有一个包含逗号的字符串。但是,我想用一点代替逗号。这一定是可能的,不幸的是我做不到。我不只是要拿回来。5。不幸的是,逗号只去掉了所有的东西。

  • 问题内容: 我一直试图读取文件,然后将读取的内容放入字符串中。然后,该字符串将按行拆分为多个字符串: input.txt读取为: 一个 强壮的小鸟 与一个非常 宽容的心 去 一天上学 忘记了他的食物 家 然而, 将文本变成混乱的混乱: 他的食物 我不确定替换换行符会如何严重破坏文本本身 问题答案: 我猜您正在使用Windows运行代码。请注意,如果您打印出结果字符串的长度,它将显示超过100个字符

  • 问题内容: 我有一个名为log.txt的文本文件,它具有以下数据 第一个逗号之前的数字是指定每个项目的索引。 我想做的是读取文件,然后将给定行中字符串的一部分(例如textFiles / a.txt)替换为另一值(例如something / bob.txt)。 这就是我到目前为止 问题答案: 一种方法是使用: 您还可以使用正则表达式,或查找搜索字符串在一行中的何处。