如何从字符串中的最后一个逗号中获取最后一个单词

时间:2015-02-14 22:08:40

标签: java android

我想在句子的最后一个分号前检索最后一个单词,请参阅以下内容。

String met = "This is the string with comma numberone; string having second wedaweda; last word";
String laststringa = met.substring(met.lastIndexOf(";")-1);
if(laststringa != null)
{
    System.out.println(laststringa);
}else{
    System.out.println("No Words");
}

我的结果很奇怪

a; last word

在我的情况下,对于上面的字符串,我应该得到     wedaweda 在最后一次分号之前的最后一次。

3 个答案:

答案 0 :(得分:3)

要拆分字符串,您需要执行以下操作。这将返回一个数组,其中元素在“分隔符”

上分割
string_object.split("separator")

在你的情况下,你会做

met.split(";")

它会返回一个数组,每个部分都作为一个元素。选择最后一个元素以获得所需内容。

实际上。你说“wedaweda”应该是最后的结果......?所以我假设你的意思是在最后一个分号之前的最后一个字。

这样做你就像前面所说的那样进行拆分,然后,你将得到数组中倒数第二个元素

String[] array = met.split(";'); // split the entire first sentence on semi-colons
String[] words = array[array.length - 2] .split(" "); // split into specific words by splitting on a blank space
String wordBeforeSemiColon = words[words.length - 1]; // get the word directly before the last semi-colon

我在IDE中测试了这段代码,它可以完全按照您的意愿运行。

答案 1 :(得分:2)

该字符是分号(不是逗号),拨打lastIndex()可以让您结束比赛,需要再次拨打lastIndex()才能开始比赛。像,

String met = "This is the string with comma numberone; string having second wedaweda; last word";
int lastIndex = met.lastIndexOf(";");
int prevIndex = met.lastIndexOf(";", lastIndex - 1);
String laststringa = met.substring(prevIndex + 1, lastIndex).trim();
if (laststringa != null) {
    System.out.println(laststringa);
} else {
    System.out.println("No Words");
}

输出

string having second wedaweda

要获得最后一个单词,您可以拆分\\s+(正则表达式匹配一个或多个空白字符),如

if (laststringa != null) {
    String[] arr = laststringa.split("\\s+");
    System.out.println(arr[arr.length - 1]);
} else {
    System.out.println("No Words");
}

哪些输出(请求的)

wedaweda

答案 2 :(得分:0)

必须是:

String laststringa = met.substring(met.lastIndexOf(";")+1);        
                                                       ^

之后的单词意味着您必须在最后一个逗号的位置添加一个。