StringTokenizer 和令牌 'space'
StringTokenizer and token 'space'
我有一个问题!
我正在使用 StringTokenizer 但我不明白如何将 'space' 作为标记!
这是我的方法的一个例子:
import java.util.*;
public class miaProva{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("Write phrase");
String s=sc.next();
StringTokenizer st=new StringTokenizer(s, " ,.");
StringBuilder sb=new StringBuilder();
sb.append('>');
while(st.hasMoreTokens()){
sb.append(st.nextToken());
}
sb.append('<');
System.out.println(sb);
}
}
但是当它找到 'space' 时它会中断方法的执行。
输入:
1) hi,how,are.you
2) hi,how are you
输出:
1) >hihowareyou<
2) >hihow<
谢谢
您是否尝试过字符串 class 中的拆分方法?
在您的示例中,当您执行 sc.next() 时,它会为您提供由 space 分隔的文本。
因此,当您键入 "Hi,how you are" 时,sc.next() returns 仅 "hi,how"
这不是 StringTokenizer 的问题,使用 sc.nextLine() 而不是 sc.next()。那应该会给你你期待的结果。
scanner 使用白色 space 作为其默认分隔符。因此,当您调用 sc.next()
时,它只会 returns 在 space 之前输入的第一部分。你可以让它像这样包含整行:
Scanner sc = new Scanner(System.in);
sc.useDelimiter("\r\n");
其中“\r\n”匹配 newline Windows OS.
编辑: 最好使用 lineSeparator
方法,这样可以在任何操作系统上运行。
Scanner sc = new Scanner(System.in);
sc.useDelimiter(System.lineSeparator());
edit 2: 或者更好(阅读@Sathiesh 的回答),使用 sc.nextLine()
.
我有一个问题! 我正在使用 StringTokenizer 但我不明白如何将 'space' 作为标记! 这是我的方法的一个例子:
import java.util.*;
public class miaProva{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("Write phrase");
String s=sc.next();
StringTokenizer st=new StringTokenizer(s, " ,.");
StringBuilder sb=new StringBuilder();
sb.append('>');
while(st.hasMoreTokens()){
sb.append(st.nextToken());
}
sb.append('<');
System.out.println(sb);
}
}
但是当它找到 'space' 时它会中断方法的执行。
输入:
1) hi,how,are.you
2) hi,how are you
输出:
1) >hihowareyou<
2) >hihow<
谢谢
您是否尝试过字符串 class 中的拆分方法?
在您的示例中,当您执行 sc.next() 时,它会为您提供由 space 分隔的文本。 因此,当您键入 "Hi,how you are" 时,sc.next() returns 仅 "hi,how" 这不是 StringTokenizer 的问题,使用 sc.nextLine() 而不是 sc.next()。那应该会给你你期待的结果。
scanner 使用白色 space 作为其默认分隔符。因此,当您调用 sc.next()
时,它只会 returns 在 space 之前输入的第一部分。你可以让它像这样包含整行:
Scanner sc = new Scanner(System.in);
sc.useDelimiter("\r\n");
其中“\r\n”匹配 newline Windows OS.
编辑: 最好使用 lineSeparator
方法,这样可以在任何操作系统上运行。
Scanner sc = new Scanner(System.in);
sc.useDelimiter(System.lineSeparator());
edit 2: 或者更好(阅读@Sathiesh 的回答),使用 sc.nextLine()
.