如何删除^ M字符java

时间:2010-06-24 14:35:16

标签: dos truncate carriage-return

问题: 如果String以\ r结尾,请删除\ r

我从这样的事情开始

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 \ n字符?

然后我转到了这个:

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

// - 3因为我们从0(1)开始,行以\ n(2)结尾,我们需要删除1个char(3)

但这似乎也很尴尬。

您能建议一个更简单,更优雅的解决方案吗?

2 个答案:

答案 0 :(得分:9)

正则表达式可以支持字符串结束锚定,你知道。 (有关详细信息,请参阅this Javadoc page

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

这也需要修理\ r \ n - > \ n,我相信。

答案 1 :(得分:3)

我会这样写:

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

我认为为字符串“\ r \ n”创建命名常量没有意义。

顺便说一下,你的第二次尝试是不正确的,因为:

  1. String.contains("\r")告诉您字符串是否包含回车符,而不是以回车符结尾,
  2. String.substring(int, int)的第二个参数是结束字符的索引;即不应位于子字符串中的位置第一个字符,
  3. "\r"的长度为一。
相关问题