【发布时间】:2011-06-08 01:15:18
【问题描述】:
在 Java 中获取字符串最后一个单词的最简单方法是什么?您可以假设没有标点符号(只有字母字符和空格)。
【问题讨论】:
-
标题说“最快”,问题要求“最简单”。请澄清。
-
最快最简单的编码和阅读。执行时间无关紧要。顺便说一句,尽管差异是无意的,但使用不同的措辞更好地进行搜索。
在 Java 中获取字符串最后一个单词的最简单方法是什么?您可以假设没有标点符号(只有字母字符和空格)。
【问题讨论】:
String test = "This is a sentence";
String lastWord = test.substring(test.lastIndexOf(" ")+1);
【讨论】:
String testString = "This is a sentence";
String[] parts = testString.split(" ");
String lastWord = parts[parts.length - 1];
System.out.println(lastWord); // "sentence"
【讨论】:
这是一种使用String 的内置正则表达式功能的方法:
String lastWord = sentence.replaceAll("^.*?(\\w+)\\W*$", "$1");
想法是匹配从^到$的整个字符串,在捕获组1中捕获\w+的最后一个序列,并使用$1替换整个句子。
【讨论】:
如果其他空白字符是可能的,那么你会想要:
testString.split("\\s+");
【讨论】:
您可以使用StringUtils(来自Apache Commons Lang)来做到这一点。它避免了索引魔术,因此更容易理解。不幸的是,substringAfterLast 在输入字符串中没有分隔符时返回空字符串,因此我们需要 if 语句来处理这种情况。
public static String getLastWord(String input) {
String wordSeparator = " ";
boolean inputIsOnlyOneWord = !StringUtils.contains(input, wordSeparator);
if (inputIsOnlyOneWord) {
return input;
}
return StringUtils.substringAfterLast(input, wordSeparator);
}
【讨论】:
获取 Kotlin 中的最后一个单词:
String.substringAfterLast(" ")
【讨论】: