我试图根据单词之间的空格分割输入句子。它没有按预期工作。
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]);
}
}
当我在分割中使用“ - ”时,它给出了下面的输出:
fsfdsfsd-second-third
result.length: 3
==
fsfdsfsd
==
second
==
third
当我用空格“”替换“ - ”时,它给出了以下输出。
first second third
result.length: 1
==
first
有关此问题的建议吗?我已经提到了stackoverflow帖子How to split a String by space,但它不起作用。
使用split("\\s+")
提供此输出:
first second third
result.length: 1
==
first
答案 0 :(得分:8)
更改
scanner.next()
要
scanner.nextLine()
来自javadoc
扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。
致电next()
会返回下一个字
致电nextLine()
会返回下一行行。
答案 1 :(得分:7)
next()
的{{1}}方法已经将字符串拆分为空格,也就是说,它返回下一个标记,字符串直到下一个字符串。因此,如果添加适当的Scanner
,您会看到println
等于第一个单词,而不是整个字符串。
将inputSentence
替换为scanInput.next()
。
答案 2 :(得分:1)
问题是scaninput.next()
只会在第一个空白字符之前读取,因此它只会引入单词first
。所以split
之后什么都没有完成。
我建议您使用Scanner
,而不是使用java.io.BufferedReader
,这样就可以read an entire line at once。
答案 3 :(得分:0)
另一种选择是使用运行良好的缓冲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]);
}
}
答案 4 :(得分:-1)
使用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]);
}
}
有关拆分(&#34; \ s +&#34;)的详细信息,请参阅blow stackoverflow post。
How exactly does String.split() method in Java work when regex is provided?