2010-06-24 47 views
3

問題: 如果字符串以\ r結尾,刪除\ r如何刪除^ M字的Java

我開始用這樣的

if (masterValue.endsWith(CARRIAGE_RETURN_STR)) { 
    masterValue = masterValue.replace(CARRIAGE_RETURN_STR, ""); 
} 

其中

public static final String CARRIAGE_RETURN_STR = (Character.toString(Constants.CARRIAGE_RETURN)); 
public static final char CARRIAGE_RETURN = '\r'; 

這對我來說似乎很尷尬。

有沒有簡單的方法來刪除\ r字符?

我然後轉移到這樣的:

if (value.contains(CARRIAGE_RETURN_STR)) { 
    value = value.substring(0, value.length()-3); 

// - 3,因爲我們從0開始(1),符合\ N(2)結束,並且我們需要刪除1個炭(3)

但是,這也看起來很尷尬。

你能提出一個更簡單,更優雅的解決方案嗎?

回答

9

正則表達式支持字符串末尾錨定,你知道的。 (有關詳細信息,請參閱this Javadoc page

myString.replaceAll("\\r$", ""); 

這也需要照顧的固定\ r \ n - > \ -N,我相信。

3

我會寫這樣的:

if (masterValue.endsWith("\r")) { 
    masterValue = masterValue.substring(0, masterValue.length() - 1); 
} 

我看不出點創建一個名爲常量字符串「\ r」。

順便說一句,你的第二次嘗試不正確,因爲:

  1. String.contains("\r")告訴你,如果字符串中包含一個回車符,而不是是否有回車結束,
  2. String.substring(int, int)第二個參數是結束字符的索引;即不應該在子字符串中的位置第一個字符,並且
  3. "\r"的長度是1。