java删除空格也删除了空格后的所有内容

时间:2015-12-26 20:29:53

标签: java string replaceall

为什么x.replaceAll("\\s+","")正在删除第一个空格以及之后的所有内容?如果x在执行a a并打印replaceAll()后最初为x,则仅打印a而不是aa

这是一个更大的项目的一部分,但出于测试目的,我在一个新的java主文件上单独尝试它,并且仍然做同样的事情这是完整的完整程序:

import java.util.*;
public class test {
    public static void main (String args[]){
        Scanner input = new Scanner(System.in);
        String y = input.next();
        String x = y.replaceAll("\\s+","");
        System.out.println(x);      
}

}

2 个答案:

答案 0 :(得分:2)

默认情况下,Scanner使用一个或多个空格作为分隔符,next()仅在分隔符之间返回一个标记。因此,如果foo bar baz next()之类的输入将返回foo,则next()的另一个调用将返回baz而另一个baz

如果您想阅读整行,请使用nextLine()be careful when using it right after other nextXyz() methods

答案 1 :(得分:0)

好的。试试这个:

public static void main (String[] args) throws java.lang.Exception
    {
        Scanner input = new Scanner(System.in);
        String y = input.nextLine();
        String x = y.replaceAll("\\s+","");
        System.out.println(x); 
    }

使用nextLine获取整个字符串。