2011-01-12 86 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.

相關問題