[英]How to split a string with space being the delimiter using Scanner
我試圖根據單詞之間的空格分割輸入句子。 它沒有按預期工作。
public static void main(String[] args) {
Scanner scaninput=new Scanner(System.in);
String inputSentence = scaninput.next();
String[] result=inputSentence.split("-");
// for(String iter:result) {
// System.out.println("iter:"+iter);
// }
System.out.println("result.length: "+result.length);
for (int count=0;count<result.length;count++) {
System.out.println("==");
System.out.println(result[count]);
}
}
當我在split中使用“ - ”時,它給出了下面的輸出:
fsfdsfsd-second-third
result.length: 3
==
fsfdsfsd
==
second
==
third
當我用空格“”替換“ - ”時,它給出了下面的輸出。
first second third
result.length: 1
==
first
關於這里有什么問題的任何建議? 我已經提到了stackoverflow post 如何按空格分割字符串 ,但它不起作用。
使用split("\\\\s+")
給出了這個輸出:
first second third
result.length: 1
==
first
更改
scanner.next()
至
scanner.nextLine()
來自javadoc
掃描程序使用分隔符模式將其輸入分解為標記,分隔符模式默認匹配空格。
調用next()
返回下一個單詞 。
調用nextLine()
返回下一行 。
Scanner
的next()
方法已經在空格上拆分字符串,也就是說,它返回下一個標記,字符串直到下一個字符串。 因此,如果添加適當的println
,您將看到inputSentence
等於第一個單詞,而不是整個字符串。
用scanInput.next()
替換scanInput.next()
scanInput.nextLine()
。
問題是, scaninput.next()
將只讀取,直到第一個空格字符,所以它只是在單詞拉動first
。 所以之后的split
什么都沒有完成。
我建議使用java.io.BufferedReader
,而不是使用Scanner
,它可以讓你一次讀取整行 。
另一種選擇是使用運行良好的緩沖Reader類。
String inputSentence;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
inputSentence=br.readLine();
String[] result=inputSentence.split("\\s+");
rintln("result.length: "+result.length);
for(int count=0;count<result.length;count++)
{
System.out.println("==");
System.out.println(result[count]);
}
}
使用src.split("\\\\s+");
而不是inputSentence.split("-");
它在每個\\\\s
上分裂,代表每個非空白字符 。 如果元素位於該分隔符之前,之間和之后,則結果為數組 。
以下是您需要的完整示例。
示例:
public class StringSplit {
public static void main(String[] args)
{
String src = "first second third";
String[] stringArray = src.split("\\s+");
System.out.println(stringArray[0]);
System.out.println(stringArray[1]);
System.out.println(stringArray[2]);
}
}
有關split(“\\ s +”)如何工作的詳細信息,請參閱blow stackoverflow post。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.