2017-02-23 30 views
0

我正在尝试使用Java中的Scanner类进行输入。如何在Java扫描器中跳过分号

我的代码是:

Scanner scan = new Scanner(System.in); 
String newline = scan.next(); 

我的输入是这样的:

india gate;25;3 

,我试图取代以上一个新的字符串整个字符串:

new delhi;23;2 

使用

.replace(str1, str2) 

的问题是它只是替换的第一个字的字符串和输出是一样的东西:

india delhi;25;3 

我怎样才能把它作为使用Scanner整个字符串?

+0

使用';'作为您的分隔符。 –

+0

请显示您的所有代码。 –

+0

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next(java.lang.String) 看到这个。 –

回答

0

您应该如何Scanner类作品阅读起来。基本上默认情况下,它使用空格作为next()的分隔符。这意味着当您拨打next()时,它会一直读取,直到找到空白为止,然后返回所读取的内容。所以当你在"india gate;25;3"上拨打next()时,它读取"india",然后命中一个空格。所以它会返回你"india"。如果你想阅读,直到换行(它看起来像你),你想要使用nextLine()

+0

这就是我在我的答案中说,但她不同意。 :) –

+0

我认为她与您的答案分裂在分号上的字符串问题。 – Neatname

+0

是的,她有一个空白问题。 –

1

使用;作为分隔符这样

while (scanner.hasNextLine()) { 
    lineScanner = new Scanner(scanner.nextLine()); 
    lineScanner.useDelimiter(";"); 
    String article = lineScanner.next(); 
    // and so on... 
} 
+0

谢谢基山,但使用;因为分隔符会根据分割字符串;我不想分割我的字符串,而是保持它完好无损 –

+0

批准我的编辑,否则手动做自己的,以便别人不会感到困惑。 @NitikaJain –

+0

scan.usedelimeter正在放缓整个过程,实际上这个程序并没有前进...... –

1

使用.replaceAll("india gate;25;3", "new delhi;23;2");

输出

new delhi;23;2 
+0

输入来动态你不能这样做所有。 –

+0

如果输入动态,那么我们也可以正则表达式,但更具体的 –