【问题标题】:Java: Simplest way to get last word in a stringJava:获取字符串中最后一个单词的最简单方法
【发布时间】:2011-06-08 01:15:18
【问题描述】:

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

【问题讨论】:

  • 标题说“最快”,问题要求“最简单”。请澄清。
  • 最快最简单的编码和阅读。执行时间无关紧要。顺便说一句,尽管差异是无意的,但使用不同的措辞更好地进行搜索。

标签: java string


【解决方案1】:
String test =  "This is a sentence";
String lastWord = test.substring(test.lastIndexOf(" ")+1);

【讨论】:

  • 需要一个 +1 并且在一个单词上失败。
  • 一行很好,因为我将在 Velocity 模板代码中使用它。可以结合正则表达式来解释其他字符,例如 JST 的解决方案。
  • 其实这样更好,已经占了一个词: String lastWord = test.substring(test.lastIndexOf(" ")+1);
  • 如果句子末尾有标点符号怎么办? “这是一句话?!”
【解决方案2】:
String testString = "This is a sentence";
String[] parts = testString.split(" ");
String lastWord = parts[parts.length - 1];
System.out.println(lastWord); // "sentence"

【讨论】:

  • 这可能是我自己想出的解决方案,不错,但单线会更好。
  • 当您说“最快”时,您是指代码最短还是执行速度最快?这可以做成一个单行,但它不会执行得更快,而且更难阅读。
  • 我没有说“最快”,我说“最简单”,我的意思是简洁和易于理解的结合。
  • @Muhd 如果是我,我认为上面的内容最容易阅读。话又说回来,这也是我立即想出的解决方案。 @OscarRyz 的解决方案也很容易阅读,所以这取决于个人喜好。
  • @Dave 可能是我的,不再容易阅读了,因为我添加了一个检查,以防它自己的字符串是最后一个单词。
【解决方案3】:

这是一种使用String 的内置正则表达式功能的方法:

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

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

Demo.

【讨论】:

  • 这个是纯金的
  • 整洁,因为它是单排的
【解决方案4】:

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

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

【讨论】:

    【解决方案5】:

    您可以使用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);
    }
    

    【讨论】:

      【解决方案6】:

      获取 Kotlin 中的最后一个单词:

      String.substringAfterLast(" ")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-08
        • 2020-02-14
        • 2015-01-01
        相关资源
        最近更新 更多