trim()不适用于从控制台输入的字符串

时间:2013-10-13 08:12:09

标签: java

我无法理解为什么trim()在这种情况下不起作用。请验证以下代码 -

    Scanner sc=new Scanner(System.in);
    System.out.print("Enter a string:");
    String s=sc.nextLine();

    System.out.println("length is:"+s.length());        
    System.out.println("trimmed length is:"+
        s.trim().length());     

现在,如果我在控制台中输入一个字符串,中间使用空格,则长度和修剪长度都显示相同的值。请注意,它在程序本身输入的字符串工作正常,即。 String s=" Man "工作正常,但为什么不是。

3 个答案:

答案 0 :(得分:3)

String#trim()仅删除前导空格和尾随空格,而不删除字符之间的空格:

  

返回字符串的副本,包含前导和尾随空格   删去。

答案 1 :(得分:0)

在使用它之前,请务必阅读函数的文档,以确定它是否真正按照您的意图执行。如果没有,那么有任何解决方法吗?如果是,那么哪个将是最优化的,这是你可以在SO上发布的地方(只是一个建议的课程)。

在你的情况下,here是String的trim()函数的文档。正如它清楚地说Returns a copy of the string, with leading and trailing whitespace omitted你不能用它来删除单词之间的空格。您可能想尝试

s.replaceAll(" ", "").length();

您可以查看相同here的文档。

答案 2 :(得分:0)

似乎工作正常,确保你输入没有“”的输入,比如 -----男人----不喜欢“----男人----”,其中 - 是空格,因为trim()修剪前导空格和尾随空格而不是字符之间的空格。