【发布时间】:2023-03-11 05:51:01
【问题描述】:
我正在尝试编写一种方法来将字符串标记为其各自的单词到一个数组中。我已经用 split 方法测试了我的程序,它工作正常,但我正在尝试编写一个不使用 split 的标记化方法。这是我迄今为止尝试过的:
public static String[] tokenize(String sentence) {
int wordCount = countWords(sentence);
String[] sentenceWords = new String[wordCount];
int curWord = 0;
char letter;
for(int i = 0; i < sentence.length()-1; i++) {
letter = sentence.charAt(i);
if (letter == ' ') {
curWord++;
continue;
}
System.out.println (sentenceWords[curWord]);
sentenceWords[curWord] = String.format("%s%c", sentenceWords[curWord], letter);
System.out.printf("%s\n", sentenceWords[curWord]);
}
return sentenceWords;
}
此方法的输出完全错误。我得到了一个充满一堆空值的输出,每个单词都在一个新行上。
我也尝试了另一种变体,但没有走得太远:
public static String[] tokenize(String sentence) {
int wordCount = countWords(sentence);
String[] sentenceWords = new String[wordCount];
for(int i = 0; i < sentence.length()-1; i++) {
if(sentence.contains(" ")) {
//Something.....
}
}
return sentenceWords;
}
我不确定正确的方法是什么。
【问题讨论】:
-
您好,您介意格式化源代码吗?让帮助更容易
-
可以考虑使用正则表达式。
-
为什么,你有工作代码。为什么要改变它?还有很多其他方法可以做到这一点,例如将其传递给
Scanner或正则表达式。手写你自己的循环很容易是其中最糟糕的。
标签: java arrays string tokenize