gpt4 book ai didi

java - ReplaceAll() 与 ReplaceAll(..., Matcher.quoteReplacement)

转载 作者:行者123 更新时间:2023-11-30 06:38:13 24 4
gpt4 key购买 nike

你好:D简短的问题:有什么区别

String geb = tf_datum.getText();
String sep = ""; //sep is short for seperator

geb = geb.replaceAll("\\.", sep);
geb = geb.replaceAll("\\,", sep);
geb = geb.replaceAll("\\-", sep);
geb = geb.replaceAll("\\ ", sep);`

String geb = tf_datum.getText();

String sep = "";
geb = geb.replaceAll("\\.", Matcher.quoteReplacement(sep));
geb = geb.replaceAll("\\,", Matcher.quoteReplacement(sep));
geb = geb.replaceAll("\\-", Matcher.quoteReplacement(sep));
geb = geb.replaceAll("\\ ", Matcher.quoteReplacement(sep));

因为两者都在起作用。我试图理解每种方法(在第二种方法中)并将其组合在一起,但这没有意义。如果有人可以帮助我,那就太好了!谢谢。 :)(我还发现了另一个问题 which seems to be the same ,但他没有在replaceAll()内部使用Matcher.quote ...所以我不确定它是否相同)

最佳答案

Matcher在这种情况下,您正在做一些不必要的额外工作,但它仍然有效地做同样的事情(但我假设您付出了效率代价,尽管在这种情况下可以忽略不计)。

在第一种情况下,你会geb.replaceAll("\\.", "") 。所以你是说拿geb ,并将每个句号基本上替换为“无”。

在第二种情况下,你会 geb.replaceAll("\\.", Matcher.quoteReplacement(sep)) 。现在,你说,拿geb并将每个句点替换为返回值 Matcher.quoteReplacement("") 。在这种情况下,Matcher.quoteReplacement返回"" ,正是您投入的内容。所以它本质上是一个不需要的额外/无用的调用。查看 Matcher.quoteReplacement 的文档here .

对于String.replaceAll here .

这里确实提到的一件事是使用 quoteReplacement抑制控制字符的特殊含义,例如 "\""$" 。所以你只需要在你想要替换时使用它 String ( replaceAll 的第二个参数)表现得就像这些是文字字符而不是控制字符。

还值得注意的是,您可以在一个正则表达式中完成这一切,例如 geb.replaceAll("[\\-\\,\\.\\s]", ""); 。我认为还有比这更好的方法,但我的正则表达式不太好。

关于java - ReplaceAll() 与 ReplaceAll(..., Matcher.quoteReplacement),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44859972/

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