【问题标题】:Is there a shorter way to replace some chars in a string instaed of calling String.replace successively? [duplicate]有没有更短的方法来替换字符串中的一些字符而不是连续调用 String.replace ? [复制]
【发布时间】:2019-08-06 23:39:51
【问题描述】:

想象一下,我想用“1”替换字符串中所有出现的“A”,用“2”替换“B”,用“3”替换“C”。我目前有

str.replace('A', '1').replace('B', '2').replace('c', '3')....

我知道我可以创建一个映射,其中包含要替换为键的字符和替换为值的字符,并对其进行迭代以替换每个匹配项。我想知道是否有更短的方法使用一些正则表达式或我不知道的 String 类的方法。类似的东西

str.replaceEach([ABC],[123])

【问题讨论】:

  • 不,没有。 docs.oracle.com/javase/8/docs/api/java/lang/String.html 即使有这样的功能,你认为它会如何在内部实现?这几乎是一个优化的算法。所以只需实现你自己的,因为它太具体了。此外,对于这类任务,正则表达式通常比替换慢。
  • @SGalea 我认为它不太具体。它实际上很常见,以至于 Unix 有一个命令 - tr
  • @KlitosKyriacou 以及你认为 Unix 是如何实现它的......
  • @Bohemian 是的,Apache 库做得很好。我是说 OP 代码中重复的 replace() 调用不是这样做的方法。

标签: java regex replace


【解决方案1】:

我不认为你可以使用标准库中的一个,但你可以使用 apache StringUtils 库中的 replaceChars,文档可以在 here 找到。

public static String replaceChars(String str,
                              String searchChars,
                              String replaceChars)

一次性替换字符串中的多个字符。此方法也可用于删除字符。

文档中列出了一些示例来说明您想要做什么。

【讨论】:

  • 非常感谢。很高兴知道它已经在 appaches StringUtils 中实现。由于我已经为其他目的导入了该库,因此我现在也可以使用此功能。
猜你喜欢
  • 2020-04-16
  • 2016-01-19
  • 2021-11-12
  • 1970-01-01
  • 2020-12-11
  • 2018-04-04
  • 2019-12-12
  • 2015-07-15
  • 1970-01-01
相关资源
最近更新 更多