你好: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 .所以如果是一样的话,我就不会再这样了)
发布于 2017-07-01 13:21:51
在Matcher的情况下,您正在做一些不必要的额外工作,但它仍然有效地完成了相同的任务(但我假设您付出了一个有效的代价,尽管在这种情况下它是可以忽略不计的)。
在第一种情况下,您可以执行geb.replaceAll("\\.", "")。所以,你是说,以geb为例,将每个句点替换为“无”。
在第二种情况下,您可以执行geb.replaceAll("\\.", Matcher.quoteReplacement(sep))。现在,您要说的是,取geb并将每个句点替换为Matcher.quoteReplacement(“”)的返回值。在本例中,Matcher.quoteReplacement返回"",这正是您将其放入其中的内容。因此,它本质上是一个额外的/无用的调用,是不需要的。在这里查看Matcher.quoteReplacement的文档:
对于String.replaceAll,这里:
不过,这里提到的一件事是使用quoteReplacement来抑制"\“和"$”等控制字符的特殊含义。因此,如果您希望替换字符串(replaceAll的第二个参数)表现为它们是文字字符而不是控制字符,则只需要使用它。
同样值得注意的是,您可以在一个正则表达式(如geb.replaceAll("[\\-\\,\\.\\s]", ""); )中完成所有这些操作。我认为有更好的方法来做,但我的准则不是很好。
https://stackoverflow.com/questions/44859972
复制相似问题