Как удалить характер java a ^m
-
29-09-2019 - |
Вопрос
Проблема: Если строка заканчивается 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 char (3)
Но это тоже кажется неловким.
Можете ли вы предложить более простое, более элегантное решение?
Решение
Знаете, регулярные линии могут поддерживать якорь в конце строк. (Видеть эта страница 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"
является одним.
Не связан с StackOverflow