1. 程式人生 > >String類中replaceAll方法不能替換美元符號$的問題解決

String類中replaceAll方法不能替換美元符號$的問題解決

原文連結: http://blog.csdn.net/wolfchou/article/details/8709783

我現在有這樣一個字串

  1. String str = "01,02,03,10,20,$,05,06|11";   


想把它裡面的",$,"替換成"$",這樣首先會想到replace方法,直接str.replace(",$,","$");就可以了,試了一下確實也是可行的。

後來我又想如果str中有多個",$,"需要替換,只要改成replaceAll應該是不成問題的,我試了一下將str改為:

  1. String str = "01,02,$,03,10,20,$,05,06|11";   
  2. str.replaceAll(",$,"
    ,"$");  


這樣卻不生效了,一個都沒有替換。

最後網上查了一下,改為:

  1. str.replaceAll( Matcher.quoteReplacement(",$,"), Matcher.quoteReplacement("$"))  

就可以了。

程式碼str.replaceAll(a,b),如果b字串中含有反斜槓 (/) 和美元符號 ($),則會丟擲異常。

需要使用Matcher.quoteReplacement(Java.lang.String)對字串b進行處理,即:

str.replaceAll(a,Matcher.quoteReplacement(b))

以下為JDK1.6 API說明:

replaceAll
public String replaceAll(String regex,
                         String replacement)

使用給定的 replacement 替換此字串所有匹配給定的正則表示式的子字串。 
呼叫此方法的 str.replaceAll(regex, repl) 形式與以下表達式產生的結果完全相同:

Pattern.compile(regex).matcher(str).replaceAll(repl)
注意,在替代字串中使用反斜槓 (/) 和美元符號 ($) 與將其視為字面值替代字串所得的結果可能不同;請參閱 Matcher.replaceAll。如有需要,可使用 Matcher.quoteReplacement(java.lang.String) 取消這些字元的特殊含義。


引數:
regex - 用來匹配此字串的正則表示式
replacement - 用來替換每個匹配項的字串 
返回:
所得 String 
丟擲: 
PatternSyntaxException - 如果正則表示式的語法無效
從以下版本開始: 
1.4 
另請參見:
Pattern


Matcher.quoteReplacement(",$,"), Matcher.quoteReplacement("$")


相關推薦

StringreplaceAll方法不能替換美元符號$的問題解決

原文連結: http://blog.csdn.net/wolfchou/article/details/8709783 我現在有這樣一個字串 String str = "01,02,03,10,20,$,05,06|11";    想把它裡面的",$,"替

String方法

1.lengtn(): 獲取字串長度 2.isEmpty(): 確認字串是否為空 3.charAt(int index): 獲取Index索引處字元的值 public class StrSource { public static void main(Stri

JavaString常見方法以及之間的轉換

String類中的方法描述 public String() 空引數構造方法 public String(byte[] bytes) 把位元組陣列轉換成字串物件 public String(byte[] bytes,int index,int length) 把位元組陣

StringgetChars方法的用法

public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin)  該方法的作用是將當前字串從srcBegin到srcEnd-1位置上的字元複製到字元陣列dst中,並從dst的dstBegin處開始存放

Stringsplit()方法的使用

String類中split()方法的使用       今天在在使用split方法時,發現split()方法很怪異的現象,查詢了官方文件和各種資料,總結如下         官方文

使用javareplaceAll方法替換字串的反斜槓

今天在專案中使用java中replaceAll方法將字串中的反斜槓("\")替換成空字串(""),結果出現如下的異常: 1 java.util.regex.PatternSyntaxException: Unexpected internal error near in

Stringintern方法的原理分析

一,前言 ​ 昨天簡單整理了JVM記憶體分配和String類常用方法,遇到了String中的intern()方法。本來想一併總結起來,但是intern方法還涉及到JDK版本的問題,內容也相對較多,所以今天就彌補昨天缺失的知識點。 二,String.intern() ​ 先來看下網上流行的關於intern()方

String.replaceAll()方法替換字符串的反斜杠()

() 替換字符串 reg 使用 regex 表達 string 匹配 java replaceAll()方法實際是采用正則表達式的規則去匹配的。 在regex中"\\"表示一個"\",在java中一個"\"也要用"\\"表示。這樣,前一個"\\"代表regex中的"\",

String.replaceAll()方法替換字串的反斜槓(\)

replaceAll()方法實際是採用正則表示式的規則去匹配的。 在regex中"\\"表示一個"\",在java中一個"\"也要用"\\"表示。這樣,前一個"\\"代表regex中的"\",後一個"\\"代表java中的"\",所以字串轉義一次,正則轉義一次,那麼一個斜

String的常用方法

lsi har 數據類型 string類型 value center abcd 截取字符串 abcde String類 一.轉換成String方法 1.public String(); 空參構造 初始化一個新創建的 String 對象,使其表示一個空字符序列 2.publi

String常用的方法(重要)

循環 類型 demo width 尋找 str2 子字符串 replace table 1.字符串與字節 public String(byte[] byte); 將全部字節變成字符串 public String (byte[] byte,int offset,in

27 string常用的方法列表

nta val nds lsi con valueof 轉換 pan nbsp 1. 獲取方法   int   length()       獲取字符串的長度   char  charAt(int index)    獲取特定位置的字符 (角標越界)   int   

String的equals方法與Objectequals方法的區別

今天在無意中發現一個小知識點,難度不大就是簡單和大家分享一下。 String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1.equals(str2));//true

Java第一階段(11)【 Java StringString常用的一些方法 】 11.20

第一階段 API String類 String類中一些常用的方法 API 編寫程式碼時,我們會遇到各種各樣的方法需要呼叫,但是又記不住那麼多,這時候就要查詢API。 API方法錢有個 “已過時”,說明此方法可以用,但不

String的多種日期格式化方法

package javaBasic; import java.util.*; public class DateFormat { public static void main(String[] args) { Date date = new Date();//筆者當前時間2018.11.

String的equals方法總結(轉載)

轉載:https://blog.csdn.net/qq_25827845/article/details/53868815 1.String原始碼中equals大致寫法: 1 public boolean equals(Object anObject) { 2 if (this == anObj

關於String常用的方法

在Java中,常用處理字串的類,在java.lang包中,分別是String和StringBuffer,這兩個類被宣告為final,所以它們沒有子類,不能自定義類來繼承它們。 因為String和StringBuffer類在java.lang包中,所以它們可以自動被所有程式,即使用時不

使用replaceAll()方法替換字串的反斜槓:(\)和正斜槓(/)

在做專案的過程中,需要將一個字串中的反斜槓(\)全部替換成(/) 原字串:http://192.168.1.10:8080/dpan\image\***.jpg; 想替換成:http://192.16

Java,String的trim()方法

public class TestStringTrim {     /**      * 主函式。      */     public static void main(String[] args) {         // 測試函式。         testStri

Java學習筆記2:使用replaceAll()方法替換字串的反斜槓:左斜槓(\)和右斜槓(/)

       在程式設計過程中,需要將一個字串中的反斜槓(\)全部替換成(\\),很簡單的操作但是很容易報錯。        比如:String filePath  =  "D:\daxiang\te