Подтвердить что ты не робот

Проверьте, содержит ли строка \n Java

Как проверить, содержит ли строка \n или новый символ строки?

word.contains("\\n")
word.contains("\n")
4b9b3361

Ответ 1

Если строка была построена в той же программе, я бы рекомендовал использовать это:

String newline = System.getProperty("line.separator");
boolean hasNewline = word.contains(newline);

Но если вы намерены использовать \n, этот драйвер иллюстрирует, что делать:

class NewLineTest {
    public static void main(String[] args) {
        String hasNewline = "this has a newline\n.";
        String noNewline = "this doesn't";

        System.out.println(hasNewline.contains("\n"));
        System.out.println(hasNewline.contains("\\n"));
        System.out.println(noNewline.contains("\n"));
        System.out.println(noNewline.contains("\\n"));

    }

}

Результат

true
false
false
false

В ответ на ваш комментарий:

class NewLineTest {
    public static void main(String[] args) {
        String word = "test\n.";
        System.out.println(word.length());
        System.out.println(word);
        word = word.replace("\n","\n ");
        System.out.println(word.length());
        System.out.println(word);

    }

}

Результаты в

6
test
.
7
test
 .

Ответ 2

Для портативности вам действительно нужно сделать что-то вроде этого:

public static final String NEW_LINE = System.getProperty("line.separator")
.
.
.
word.contains(NEW_LINE);

если вы не уверены, что "\n" - это то, что вы хотите.

Ответ 3

Второй:

word.contains("\n");

Ответ 4

Я бы предпочел доверить JDK свойству System. Ниже приведен рабочий фрагмент.

    private boolean checkIfStringContainsNewLineCharacters(String str){
        if(!StringUtils.isEmpty(str)){
            Scanner scanner = new Scanner(str);
            scanner.nextLine();
            boolean hasNextLine =  scanner.hasNextLine();
            scanner.close();
            return hasNextLine;
        }
        return false;
    }