0

我不明白为什么 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 "工作正常,但为什么不是上面的。

4

3 回答 3

3

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

返回字符串的副本,省略前导和尾随空格。

于 2013-10-13T08:14:45.080 回答
0

在使用它来检查它是否真的按照您的意图做之前,请务必阅读函数的文档。如果没有,那么有什么解决方法吗?如果是,那么哪个将是最优化的,这是您可以在 SO 上发布的地方(当然只是一个建议)。

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

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

您可以在此处查看相同的文档。

于 2013-10-13T08:34:46.153 回答
0

它似乎工作正常,请确保您输入的输入没有“”,例如 -----Man---- 不像“----Man----”,其中 - 是空格,如 trim()修剪前导和尾随空格,而不是字符之间的空格。

于 2013-10-13T08:36:26.787 回答