2011-01-12 380 views
37

获取Java中最后一个单词的最简单方法是什么?你可以假设没有标点符号(只是字母和空格)。Java:获取字符串中最后一个单词的最简单方法

+0

相关:http://stackoverflow.com/questions/1181969/java-get-last-element-after-split – GreenMatt 2011-01-12 19:03:50

+3

标题说 “最快”,问题询问 “简单”。请澄清。 – z5h 2011-01-12 20:42:35

+1

最快最简单的编码和阅读。执行时间无关紧要。顺便说一句,尽管差异是无意的,但有不同的措词更适合搜索目的。 – Muhd 2011-01-12 21:49:33

回答

126
String test = "This is a sentence"; 
String lastWord = test.substring(test.lastIndexOf(" ")+1); 
17
String testString = "This is a sentence"; 
String[] parts = testString.split(" "); 
String lastWord = parts[parts.length - 1]; 
System.out.println(lastWord); // "sentence" 
10

如果其他空格字符是可能的,那么你会想:

testString.split("\\s+"); 
4

你可以做到这一点与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); 
} 
8

这里是一个办法做到这一点使用String的内置的正则表达式功能:

String lastWord = sentence.replaceAll("^.*?(\\w+)\\W*$", "$1"); 

的想法是从^整个字符串匹配$,捕捉\w+最后一个序列在捕获组1中,并用$1替换整个句子。

Demo.

相关问题