Как удалить символ ^M Java
Проблема:если строка заканчивается на \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?
Затем я перешел к этому:
if (value.contains(CARRIAGE_RETURN_STR)) {
value = value.substring(0, value.length()-3);
// - 3, потому что мы начинаем с 0 (1), строка заканчивается \n (2) и нам нужно удалить 1 символ (3)
Но это тоже кажется неловким.
Можете ли вы предложить более простое и элегантное решение?
2 ответа
Решение
Знаете, регулярные выражения могут поддерживать привязку конца строки. (См. Эту страницу Javadoc для получения дополнительной информации)
myString.replaceAll("\\r$", "");
Это также заботится об исправлении \r\n -> \n, я полагаю.
Я бы написал это так:
if (masterValue.endsWith("\r")) {
masterValue = masterValue.substring(0, masterValue.length() - 1);
}
Я не вижу смысла в создании именованной константы для строки "\r".
Кстати, ваша вторая попытка неверна, потому что:
String.contains("\r")
говорит вам, если строка содержит возврат каретки, а не если она заканчивается возвратом каретки,- второй аргумент
String.substring(int, int)
индекс конечного символа; то есть позиция первого символа, который НЕ должен быть в подстроке, и - длина
"\r"
это один.