我正在创建一个程序,让用户输入一个句子,然后,应用程序会将String分解为子字符串,其中空格是破坏原始字符串的。
import java.util.StringTokenizer;
public class whitespace {
public static void main(String[] args) {
String text = "supervisors signature tom hanks";
int tokenCount; //number of words
int idx=0; // index
String words[]=new String [500]; // space for words
StringTokenizer st=new StringTokenizer(text); // split text into segements
tokenCount=st.countTokens();
while (st.hasMoreTokens()) // is there stuff to get?
{
words[idx]=st.nextToken();
idx++;
}
}
到目前为止我有这个代码,虽然它作为常规Java程序工作正常,但while循环似乎会导致应用程序进入无限循环。有什么想法吗?
答案 0 :(得分:5)
我认为你可以使用String.split方法:
String text = "supervisors signature tom hanks";
String[] tokens = text.split("\\s+");
for (String str : tokens)
{
//Do what you need with your tokens here.
}
正则表达式会在遇到一个或多个空格字符时将文本拆分为句子。
根据this页面,StringTokenizer已被String.split替换。
答案 1 :(得分:4)
使用此:
words = text.split(" ");
答案 2 :(得分:1)
String[] words = text.split(" ");
答案 3 :(得分:1)
使用Apache StrTokenizer
StrTokenizer strTok = new StrTokenizer(text);
String[] strList = strTok.getTokenArray();
http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/text/StrTokenizer.html
答案 4 :(得分:0)
StringTokenizer sta=new StringTokenizer(text); // split text into segements
String[] words= new String[100];int idx=0;
while (sta.hasMoreTokens()) // is there stuff to get?
{
words[idx]=sta.nextToken();
System.out.println(words[idx]);
idx++;
}
这是我复制你的代码并通过改变一点来执行的,它工作得很好。