小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

replace和replaceAll的區(qū)別

 dddTTLee 2010-12-03

閱讀文章前,請先做道題(也是因為這道題,讓我寫下該文章):

public static void main(String[] args) {   

String classPath = "java.lang.String";   

System.out.println(classPath.replaceAll(".", "/"));   

輸出結果是? 

如果你認為是java/lang/String ,那你就錯了。正確的輸出結果是:////////////////

原因:請先看看replace和replaceAll的區(qū)別。

replace和replaceAll的區(qū)別:

1、replace的參數是CharSequence和CharSequence,其中第一個是匹配的字符或字符串,第二個是替換的字符或字符串。即可以支持字符的替換,也支持字符串的替換(CharSequence即字符串序列的意思,相當于字符串)

2、replaceAll的參數是String和String,第一個參數regex,是替換規(guī)則(用正則表達式)。原因在于String類中replaceAll的實現用到Pattern進行正則表達式匹配(關于正則表達式可以baidu或google一下,以后有空再寫篇文章總結下)。

replaceAll的源代碼如下:

public String replaceAll(String regex, String replacement) {

return Pattern.compile(regex).matcher(this).replaceAll(replacement);

}

在正則表達式中.(小圓點)表示匹配除換行符號外的任意字符,所以上面的例子才會出現16個/

如果想匹配小圓點,可以用轉義字符\ 則代碼應該如下:

System.out.println(classPath.replaceAll("\\.", "/"));  //其中\(zhòng)\匹配\,之后的\. 匹配.(小圓點)

當然,你也可以用replace()進行處理,如下:

System.out.println(classPath.replace(".", "/"));

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多