从字符串返回单个单词的方法

时间:2018-07-30 06:22:04

标签: java string

正如标题中所述,我想在Java中创建一个方法,该方法从字符串中查找每个单词并将其打印出来。

这就是它的样子(更多):

public int findFirstLetter(int pos, String text)
{
    while (pos<text.length())
    {
        if (Character.isLetter(text.charAt(pos))==true&&(pos == 0||Character.isLetter(text.charAt(pos-1))==false)){return pos;}
        pos++;
    }
    return -1;
}
public int findLastLetter(int pos, String text)
{
    while (pos<text.length()){
        if (Character.isLetter(text.charAt(pos))==true&&(pos+2>text.length()||Character.isLetter(text.charAt(pos+1))==false)){return pos;}
        pos++;
        if (pos == -1){break;};    
    }
    return -1;
}
public void testString (String text)
{
    int first = findFirstLetter(0,text);
    int last = findLastLetter(0,text);
    String word = "";
    int startWord = 0;
    int i = 0;
    while (first!=-1)
    {
        word = text.substring(first, last+1);
        System.out.println("word: "+word);
        startWord = text.indexOf(word)+1;
        first = findFirstLetter(startWord,text);
        if(first == -1){break;}
        last = findLastLetter(first,text);
    }

当我提供一些String作为此方法的输入时,循环从中间开始重复并且没有到达终点。例如,在最后一句话中,该方法一遍又一遍地重复“循环结束”。有人可以给我一些建议,以便找出问题所在吗?

1 个答案:

答案 0 :(得分:0)

正如@Tim Biegeleisen在其注释中所述,您可以使用split来获取单词,将其放入数组并在其上循环以打印它们。请注意,提供了两个选项,您应该选择其中一个。如果您正在学习Java,则第二个选项更易读易懂。

public void printWords(String s) {

    String [] words = s.split("\\s+"); //Option 1: Tim Biegelsman regex
    String [] words = s.split(" "); //Option 2: if the words are separated by blanks
    for(String word : words) {
        System.out.println(word);
    }
}

还请注意,您可以通过以下方式保存一行代码:

public void printWords(String s) {
    for(String word : s.split(" ")) {
        System.out.println(word);
    }
}