繁体   English   中英

我试图解析这个字符串并得到最后一个词

[英]I am trying to parse this string and get the last word

我在这里做错了吗? 打印时我得到“*”,我需要得到“-32”。 我正在解析每个单词并返回最后一个单词。

public static void main(String[] args) {

    System.out.println(stringParse("3 - 5 * 2 / -32"));

}

public static String stringParse(String string) {
    String[] word = new String[countWords(string)];
    string = string + " ";
    for (int i = 0; i <= countWords(string); i++) {
        int space = string.indexOf(" ");
        word[i] = string.substring(0, space);
        string = string.substring(space+1);
    }
    return word[countWords(string)];
}


public static int countWords(String string) {
    int wordCount = 0;
    if (string.length() != 0) {
        wordCount = 1;  
    }
    for (int i = 0; i <= string.length()-1; i++){
        if (string.substring(i,i+1).equals(" ")) {
            wordCount++;
        }
    }
    return wordCount;
}

您可以改为使用 "\\\\s+" 通过空格拆分字符串并返回该数组的最后一个元素。 这将返回最后一个字。

public static String stringParse(String s){
    return s.split("\\s+")[s.split("\\s+").length-1];
}

在这种情况下,您也可以使用正则表达式:

public static void main(String[] args) {

    System.out.println(stringParse("3 - 5 * 2 / -32"));

}

public static String stringParse(String string) {
    String found = null;
    Matcher m = Pattern.compile("\\s((\\W?)\\w+)$", Pattern.CASE_INSENSITIVE)
            .matcher(string);
    while (m.find()) {found = m.group();}
    return found;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM