我正在尝试创建一种方法来返回字符串中的最后一个单词,但是我在编写它时遇到了一些麻烦。
我正在尝试通过查找字符串中的最后一个空格并使用子字符串来查找单词来做到这一点。这是我到目前为止的内容:
String strSpace=" ";
int Temp; //the index of the last space
for(int i=str.length()-1; i>0; i--){
if(strSpace.indexOf(str.charAt(i))>=0){
//some code in between that I not sure how to write
}
}
}
我只是从Java开始,所以我不了解该语言的许多复杂部分。如果有人可以帮助我找到解决此问题的简单方法,将不胜感激。谢谢!
答案 0 :(得分:4)
您可以这样做:
String[] words = originalStr.split(" "); // uses an array
String lastWord = words[words.length - 1];
您已经说了最后一句话。
您要在每个空格处拆分原始字符串,然后使用String#split
方法将子字符串存储在数组中。
有了数组后,您将通过获取最后一个数组索引处的值来检索最后一个元素(通过获取数组长度并减去1,因为数组索引始于0,因此可以找到该元素)。
答案 1 :(得分:4)
String str = "Code Wines";
String lastWord = str.substring(str.lastIndexOf(" ")+1);
System.out.print(lastWord);
输出:
Wines
答案 2 :(得分:3)
String#lastIndexOf
和String#substring
是您的朋友。
char
s可以直接转换为int
s,我们将使用它们来查找最后一个空格。然后,我们将从那里开始子字符串。
String phrase = "The last word of this sentence is stackoverflow";
System.out.println(phrase.substring(phrase.lastIndexOf(' ')));
这也会打印空格字符本身。为了消除这种情况,我们只需将子字符串的索引增加一个。
String phrase = "The last word of this sentence is stackoverflow";
System.out.println(phrase.substring(1 + phrase.lastIndexOf(' ')));
如果您不想使用String#lastIndexOf
,则可以遍历字符串并在每个空格处对其进行子字符串操作,直到没有剩余空间为止。
String phrase = "The last word of this sentence is stackoverflow";
String subPhrase = phrase;
while(true) {
String temp = subPhrase.substring(1 + subPhrase.indexOf(" "));
if(temp.equals(subPhrase)) {
break;
} else {
subPhrase = temp;
}
}
System.out.println(subPhrase);
答案 3 :(得分:2)
您可以尝试:
System.out.println("Last word of the sentence is : " + string.substring (string.lastIndexOf (' '), string.length()));
答案 4 :(得分:2)
您可以使用:(如果您不熟悉数组或不寻常的方法)
public static String lastWord(String a) // only use static if it's in the
main class
{
String lastWord = "";
// below is a new String which is the String without spaces at the ends
String x = a.trim();
for (int i=0; i< x.length(); i++)
{
if (x.charAt(i)==' ')
lastWord = x.substring(i);
}
return lastWord;
}
答案 5 :(得分:2)
当您第一次找到空白字符停止遍历工作并返回单词时,您只需从尾部遍历输入字符串。像这样的简单代码:
public static String lastWord(String inputs) {
boolean beforWords = false;
StringBuilder sb = new StringBuilder();
for (int i = inputs.length() - 1; i >= 0; i--) {
if (inputs.charAt(i) != ' ') {
sb.append(inputs.charAt(i));
beforWords = true;
} else if (beforWords){
break;
}
}
return sb.reverse().toString();
}