我正在尝试使用空格" "
来分隔用户输入的字符串中的单词。无论输入的字符串如何,空格都会分隔每个单词。除此之外,我不能使用split()
,因为这是我迄今为止在网上找到的最常见的解决方案。只允许使用substring()
。
在我失败的尝试中,我只能获得第一个输入的单词(例如“随机”),但不能分开第二个和第三个单词(例如“访问记忆”)。我不打算发布我失败的尝试,但我要求的代码可以帮助我识别每个单词,而不是打印每个单词?
例如:x = foo.substring(1, firstWord);
P.S。我知道这用于创建首字母缩略词,我可以做那部分,只需要识别每个子串。
public class ThreeLetterAcronym {
public static void main(String[] args) {
while (firstWord < wordsInput.length()) {
if (wordsInput.charAt(firstWord) == ' ') {
first = wordsInput.substring(0,firstWord);
second = wordsInput.substring(firstWord + 1, wordsInput.length());
// I know that this is the spot where the last two words are
// displayed in the output, this is the closest I have been to
// displaying anything relevant.
firstWord = wordsInput.length();
}
++firstWord;
}
JOptionPane.showMessageDialog(null, "Original phrase was: "
+ initialInput + "\nThree letter acronym is: " + first + second);
}
}
答案 0 :(得分:2)
String tmp = wordsInput.trim();
int spaceIndex = tmp.indexOf(" ");
first = tmp.substring(0,spaceIndex);
tmp = tmp.substring(spaceIndex+1);
tmp = tmp.trim();
spaceIndex = tmp.indexOf(" ");
second = tmp.substring(0, spaceIndex);
tmp = tmp.trim();
third = tmp.substring(spaceIndex+1);
您可以使用循环来改进代码。我希望这会有所帮助。
答案 1 :(得分:1)
如果你可以使用indexof(“”)这将是一个整洁的方式来遍历字符串,直到indexOf返回-1和子串的结果。这将是递归函数的一个很好的候选者。
findStrings(String input, ArrayList<String> stringList){
if(input.indexOf(" ") < 0)
return;
stringList.add(input.subString(0,input.indexOf(" "))
input = input.subString(input.indexOf(" "));
return findString(input, stringList);
}
这样的事情。在一个字符串索引上模拟一个和类似的东西,但我会让你弄明白。
答案 2 :(得分:1)
这里是您问题的直接答案,尽管Dylan提供的递归更有效,以下将帮助您了解正在发生的事情
public static void main(String[] args) {
String str = "hi hello how are you";
List<String> wordList = new ArrayList<String>();
int index = 0;
boolean done = false;
index = str.indexOf(" ");
while(!done){
String newStr = null;
if(index == -1){
newStr = str;
}else{
newStr = str.substring(0,index);
}
wordList.add(newStr);
if(index == -1){
str = "";
}else{
str = str.substring(index).trim();
}
if(!(str.length() > 0)){
done = true;
}else{
index = str.indexOf(" ");
}
}
for(String string : wordList){
System.out.println(string);
}
}
答案 3 :(得分:0)
您是否考虑过使用Scanner类,可以对其进行设置,使其使用指定的分隔符。看看Oricals网站http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html 本网站应向您展示您可以使用的所有扫描仪方法,以及实施和设置此类