返回第n个令牌

时间:2014-08-11 15:58:27

标签: java stringtokenizer

我是Java的新手,我对夏季作业有疑问。这些是说明:

编写一个名为SpecialToken的类,它有一个名为thirdToken的静态方法。此

方法应该作为String返回,String是作为参数传递的String的第三个标记。

您可以假设空格将用作分隔符。

这是我到目前为止所得到的,但老实说,我对参数应该是什么以及如何返回第三个令牌感到难过!我以为我可以做像nextToken()这样的事情直到第三次。

public class SpecialToken {
    public static String thirdToken() {

    }
}

1 个答案:

答案 0 :(得分:2)

尝试类似

的内容
public class SpecialToken {
    public static String thirdToken(String str) {
        String[] splited = str.split(" ");
        return splited[2];
    }
}

另请参阅this tutorial或尝试在Google上搜索“java split string into space by space”

另请注意,正如Betlista所说,这没有任何错误检查,因此如果传递的字符串只有一个空格分隔的两个标记,那么您将获得一个超出范围的数组异常。

或者另一种方法是“使用StringTokenizer来标记字符串。导入java.util.StringTokenizer。然后创建一个StringTokenizer的新实例,其字符串为tokenize,分隔符为参数。如果您不输入作为参数的分隔符,分隔符将自动默认为空格。在拥有StringTokenizer后,您可以使用nextToken()方法获取每个标记。“via Wikihow

使用此方法,您的代码应如下所示:

public class SpecialToken {
    public static String thirdToken(String str) {
        StringTokenizer tok = new StringTokenizer(str); // If you do not enter the delimiter as a parameter, the delimiter will automatically default to white space
        int n = tok.countTokens();
        if (n < 3) {return "";}
        tok.nextToken();
        tok.nextToken();
        return tok.nextToken();
    }
}

但是请记住Wikihow的警告“现在,不鼓励使用StringTokenizer,并且鼓励在String类中使用split()方法或者使用java.util.regex包。”