【发布时间】:2020-02-15 13:56:30
【问题描述】:
我正在尝试创建一个使用分隔符分隔字符串输入(Windows 路径)的程序。但是我的程序似乎忽略了分隔符。
我期待的结果:
Skriv in sökvägen: C://Windows/System/
C
Windows
System
我得到的结果:
Skriv in sökvägen: C://Windows/System/
C://Windows/System/
我在下面的代码中遗漏了什么?
import java.util.Scanner;
public class Sokvagen
{
public static void main(String[] args)
{
//String representing pathway
String sokvag;
//Creating scanner object for reading from input stream
Scanner userInput = new Scanner(System.in);
// Set delimiter to ':' or '/' or whitespace
userInput.useDelimiter("[:/\\s]+");
// Instructions to the user to type a windows patway ex: C://Windows/System/
System.out.print("Skriv in sökvägen: ");
//Input
sokvag = userInput.nextLine();
//Print the result
System.out.println(sokvag);
userInput.close();
}
}
【问题讨论】:
-
文档 -
nextLine(): "使扫描器前进到当前行并返回被跳过的输入。此方法返回当前行的其余部分,不包括任何 行分隔符 最后。”;next(): "从这个扫描器中查找并返回下一个完整的标记。一个完整的标记前后是匹配分隔符模式的输入。" -
考虑检查
Path(和Paths)类...... -
当使用 next () 我得到 4 而不是 C C C C
-
我得到
"C"、"Windows"和"System"ideone.com/Q8n2jW(显然使用循环做得更好,参见Stefan's answer)((也不知道为什么\s,又名空白为分隔符))
标签: java string java.util.scanner delimiter