\ n位于字符串中的位置?

时间:2014-01-19 21:22:55

标签: java regex string contains

我有一个来自文本区域的字符串:(变量名称为string

This is the first line
And this is the second

如果我使用string.split(" ")将其拆分为单独的单词,请检查哪些单词包含“\ n”

for(String s : string.split(" ")) {
    if(s.contains("\n"))
        System.out.println(s);
}

我的句子中的lineAnd都包含\n。但是,如果我要检查这个词是以\n开头还是以它结尾,那么它就不会给我带来任何结果。

if(s.contains("\n")) {
    System.out.println("Contains");

    if(s.startsWith("\n"))
        System.out.println("Starts with");
    else if(s.endsWith("\n")) {
        System.out.println("Ends with");
    else
        System.out.println("Does not contain");
}

我的结果:

Contains
Does not contain

因此,如果该单词包含\n,但它不是以它开头或结尾,那么它究竟在哪里以及如何在不使用replaceAll(String, String)的情况下管理它?

4 个答案:

答案 0 :(得分:24)

字符串看起来像是:

"This is the first line\nAnd this is the second"

因此,当您按" "拆分时,您会得到:

"line\nAnd"

当你打印它时,它看起来像两个单独的字符串。为了证明这一点,尝试在for循环中添加额外的打印:

for (final String s : string.split(" ")) {
    if (s.contains("\n")) {
        System.out.print(s);
        System.out.println(" END");
    }
}

<强>输出:

line
And END

当您尝试检查字符串是以"\n"开头还是结尾时,您将无法获得任何结果,因为事实上字符串"line\nAnd"不会以"\n"开头或结尾

答案 1 :(得分:5)

这是"line\nAnd"

打印时,它显示为

line
And

答案 2 :(得分:2)

没有以及。它是行\ n和。你在控制台看到了:


完全是因为换行符 \ n

所以它;在中间,如果您将代码更改为s.contains("\n"))。你会看到它。

答案 3 :(得分:2)

字符串:

This is the first line\nAnd this is the second

使用" " (space)分割后,您将获得输出:line\nAnd,这意味着字符串不会以\n开头或以if (s.contains("\n")) { System.out.print(s); } 结尾。

line
And

输出:

{{1}}