问题: 如果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)
但这似乎也很尴尬。
您能建议一个更简单,更优雅的解决方案吗?
答案 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”创建命名常量没有意义。
顺便说一下,你的第二次尝试是不正确的,因为:
String.contains("\r")
告诉您字符串是否包含回车符,而不是以回车符结尾,String.substring(int, int)
的第二个参数是结束字符的索引;即不应位于子字符串中的位置第一个字符,"\r"
的长度为一。