2015-12-26 160 views
0

为什么x.replaceAll("\\s+","")正在删除第一个空格及其后的所有内容?如果x是做replaceAll()和打印x后最初a a,只打印aaajava删除空格也删除空格后的所有内容

这是一个更大的项目的一部分,但是出于测试目的,我分别尝试了一个新的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);  
} 

} 
+0

我刚试过,我得到'aa'。请发布[MCVE](http://stackoverflow.com/help/mcve)。 –

+0

刚刚编辑的问题 –

+1

认为我自己找到答案我应该nextLine()不只是next()正确吗? –

回答

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获取整个字符串。

+0

刚刚编辑问题 –

+0

[“适合我”](http://meta.stackexchange.com/a/118993/186652)并不是真正的答案。这只是评论,表明OP需要提供更多细节。 – Pshemo

+0

@ j.doe,编辑需要a和打印aa的代码 – SomeDude

2

默认情况下,扫描仪使用一个或多个空格分隔符如,和next()只返回一个分隔符之间的令牌。因此,在像foo bar baznext()输入的情况下,将返回foonext()另一个调用将返回baz和另外一个baz

如果你婉阅读整条生产线采用nextLine()be careful when using it right after other nextXyz() methods