Вопрос

Проблема: Если строка заканчивается 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».

Кстати, ваша вторая попытка неверна, потому что:

  1. String.contains("\r") сообщает, если строка содержит возврат перевозки, а не в том, что она заканчивается возвратом каретки,
  2. второй аргумент String.substring(int, int) это индекс конечного персонажа; т.е. первый характер позиции, который не должен быть в подстроении, и
  3. длина "\r" является одним.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top