我想在句子的最后一个分号前检索最后一个单词,请参阅以下内容。
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 在最后一次分号之前的最后一次。
答案 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);
^
之后的单词意味着您必须在最后一个逗号的位置添加一个。