Scala的StringLike.replaceAllLiterally相比Java的String.replace有何优势?

13

是的。原因是你讨厌转义字符。 - om-nom-nom
1
刚刚查看了Java源代码 - 结果发现对于CharSequence版本(与单字符版本相比),Java也只是编译文字正则表达式。似乎它们之间除了名称和@RexKerr提到的StringBuilder重载之外没有真正的区别。 - Jxtps
1
@om-nom-nom:我引用的是 String.replace,而不是 String.replaceAll(在后者中,您需要执行您提到的转义)。 - Jxtps
2个回答

8
为避免与 StringBuilder 上的 replace 冲突,建议不要在字符串上使用该方法。同时,StringBuilder 也是一个 StringLike。至于为什么不修改 StringBuilderreplace 方法,我不确定原因。
除非需要处理包装字符串和其构建器,否则没有理由在字符串上使用该方法。

自从Scala 2.12或2.13(我不确定确切的时间)以来,编译器在使用replaceAllLiterally处理String时会发出弃用警告,并建议改用replace - ebruchez

1

使用Scala的方法可以避免被转义字符淹没,这非常有帮助。Stack Overflow用户@pedrofurla@rampart81这里很好地解释了这一切。


2
Java的String.replaceAll使用正则表达式和转义字符,但String.replace不使用。我不确定这是正确的比较。 - Louis Wasserman
Scala 通过隐式转换在 StringOps 中也具有所有 Java 的 replace* 方法。我认为 OP 是在问什么使得独特的 Scala 方法 replaceAllLiterally 有用甚至更可取。 - Vidya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接