java replaceAll Replace


java ReplaceAll 的兩個參數都必須是正則表達式。

在正則表達式中 
\ (一個斜線)是用 \\ 來表示(即:用兩個斜線表示一個斜線)

而在Java語言中 \ (一個斜線)是用 \\ 來表示。(即:也用兩個斜線表示一個斜線)

所以正則表達式為兩個斜線("\\")的寫法,在Java語言中要用4個斜線來表示"\\\\"
(即: 一個"現實中的斜線" 在 正則表達式中用2個斜線來表示,而在Java中2個斜線要用4個斜線來表示)

所以代碼如下:
/*
例如: str = "\\\\"; 實際上是表示2個斜線。
你的目的是將2個"實際"斜線 替換為4個"實際斜線"
需要編寫如下代碼
*/
// str的實際內容是\\ (即兩個斜線)
String str = "\\\\";
//將str中的兩個斜線,轉換為兩個雙斜線(即: 4條斜線)
str = str.replaceAll("\\\\", "\\\\\\\\");
System.out.println(str);
 
 
  1. public static void main(String[] args) {   
  2.          String classPath = "java.lang.String";   
  3.          System.out.println(classPath.replaceAll(".", "/"));   
輸出結果是? 
如果你認為是java/lang/String ,那你就錯了。正確的輸出結果是:////////////////
原因:請先看看replace和replaceAll的區別。
replace和replaceAll的區別:
 
        
1、replace的參數是CharSequence和CharSequence,其中第一個是匹配的字符或字符串,第二個是替換的字符或字符串。即可以支持字符的替換,也支持字符串的替換(CharSequence即字符串序列的意思,相當於字符串)
2、replaceAll的參數是String和String,第一個參數regex,是替換規則(用正則表達式)。原因在於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("\\.", "/"));  //其中\\匹配\,之后的\. 匹配.(小圓點)
 
        
當然,你也可以用replace()進行處理,如下:
 
        
System.out.println(classPath.replace(".", "/"));
 

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM