Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:测试字符串是否以换行符结尾_Java_String - Fatal编程技术网

Java:测试字符串是否以换行符结尾

Java:测试字符串是否以换行符结尾,java,string,Java,String,我想执行一个子字符串.equals(“\n”)。在下面的代码中,我取最后一个字符并检查它是否是换行符 String substring = nextResult.length() > 1 ? nextResult.substring(nextResult.length() - 1) : nextResult; return substring.equals("\n") ? /* do stuff */ : /* do other stuff */; 我只取最后一

我想执行一个
子字符串.equals(“\n”)
。在下面的代码中,我取最后一个字符并检查它是否是换行符

String substring = nextResult.length() > 1 ? nextResult.substring(nextResult.length() - 1) : nextResult;            
return substring.equals("\n") ?  /* do stuff */ : /* do other stuff */;
我只取最后一个字符,因为Java将
\n
作为一个
char
。然而,据我所见,
substring.equals(“\n”)
为空格(
)返回
true
),我认为是制表符(
\t
)。是这样吗


如何正确检查字符串的结尾是否为换行符,或者至少检查字符串是否为换行符?

这不起作用吗?似乎至少从1.5.0开始就有了,这不管用吗?似乎至少从1.5.0开始就存在了,我猜您的nextResult变量有问题,因为这对我来说很好:

public class Test{
    public static void main(String... args){
        System.out.println("\t".equals("\n")); //false
        System.out.println(" ".equals("\n")); //false
        System.out.println("\n".equals("\n")); //true
    }
}
确保nextResult确实包含您认为它所做的事情,如果是这样,请发布一篇使用硬编码字符串的文章,以向我们确切地说明问题所在

编辑:我已经修改了上面的示例以使用子字符串,它仍然可以正常工作:

public class Test{
    public static void main(String... args){

        String endsWithNewline = "test\n";
        String substring = endsWithNewline.substring(4);

        System.out.println(substring.equals("\t")); //false
        System.out.println(substring.equals(" ")); //false
        System.out.println(substring.equals("\n")); //true
    }
}

我猜您的nextResult变量有问题,因为这对我来说很好:

public class Test{
    public static void main(String... args){
        System.out.println("\t".equals("\n")); //false
        System.out.println(" ".equals("\n")); //false
        System.out.println("\n".equals("\n")); //true
    }
}
确保nextResult确实包含您认为它所做的事情,如果是这样,请发布一篇使用硬编码字符串的文章,以向我们确切地说明问题所在

编辑:我已经修改了上面的示例以使用子字符串,它仍然可以正常工作:

public class Test{
    public static void main(String... args){

        String endsWithNewline = "test\n";
        String substring = endsWithNewline.substring(4);

        System.out.println(substring.equals("\t")); //false
        System.out.println(substring.equals(" ")); //false
        System.out.println(substring.equals("\n")); //true
    }
}

你的问题没有多大意义,你的输入也不能像你想象的那样-

// The first one will equal "\n" the second won't.
String[] arr = { "hi\n", "hi " };
for (String nextResult : arr) {
    String substring = nextResult.substring(nextResult.length() - 1);
    if (substring.equals("\n")) {
        System.out.println("Yes: " + nextResult);
    } else {
        System.out.println("No: " + nextResult);
    }
}
输出为

Yes: hi

No: hi 

你的问题没有多大意义,你的输入也不能像你想象的那样-

// The first one will equal "\n" the second won't.
String[] arr = { "hi\n", "hi " };
for (String nextResult : arr) {
    String substring = nextResult.substring(nextResult.length() - 1);
    if (substring.equals("\n")) {
        System.out.println("Yes: " + nextResult);
    } else {
        System.out.println("No: " + nextResult);
    }
}
输出为

Yes: hi

No: hi 
您可以使用:

或:

但是,您当前的代码对我来说很好。可能您的输入有某种类型的输入错误。

您可以使用:

或:


但是,您当前的代码对我来说很好。也许您的输入中有某种类型的输入错误。

为了检查某物是否是新行符号,我将使用
Guava
CharMatcher

final String breakingWhitespace = "\n\r";
Assert.assertTrue(CharMatcher.BREAKING_WHITESPACE.matchesAllOf(whitespace));
匹配还有许多其他变体:

  • 匹配(字符)
  • 匹配Allof(字符序列)
  • matchesAnyOf(字符序列)
  • matchesNoneOf(字符序列)
查找文档


使用此方法的主要优点是,它适合许多“新行”(或空白)字符(仅适用于)

为了检查某物是否是新行符号,我将使用
Guava
CharMatcher

final String breakingWhitespace = "\n\r";
Assert.assertTrue(CharMatcher.BREAKING_WHITESPACE.matchesAllOf(whitespace));
匹配还有许多其他变体:

  • 匹配(字符)
  • 匹配Allof(字符序列)
  • matchesAnyOf(字符序列)
  • matchesNoneOf(字符序列)
查找文档


使用此方法的主要优点是,它适合许多“新行”(或空白)字符(仅适用于)

你能用硬编码的字符串发布一个吗?我们不知道nextResult是什么,所以这是可以测试的。你能用硬编码字符串发布一个吗?我们不知道下一个结果是什么,所以这是可能的测试。是的,你是正确的。Equals可以完美地工作。我有一个树迭代,它以异常的方式连接字符串,所以在最后总是有一个
\n
。是的,你是对的。Equals可以完美地工作。我有一个树迭代,它以异常的方式压缩字符串,因此在最后总是有一个
\n
.endsWith(“\n”)
是完美的+1
.endsWith(“\n”)
非常完美+1.