获取Java数组最后一个元素的更简单的方法


String sentence = "Any simpler way to get the last element of a Java array?";
String lastToken = sentence.split(" ")[sentence.split(" ").length-1];

我想把句子分开,得到最后一个记号。我觉得我这样做有点太尴尬了。基本上,我希望第二个语句更短。这可能吗?

Edit:我要找的是:1)不需要单独声明数组2)不需要拆分句子两次。如果有一个叫做last的方法就好了。我怀疑这是不可能的,但我想确定一下。

另一种获取最后一个标记/单词

的方法
String lastToken = sentance.replaceAll(".* ", "");

您只需要拆分一次,并取最后一个元素。

String sentence = "Any simpler way to get the last element of a Java array?";
String[] tokens = sentence.split(" ");
String lastToken = tokens[tokens.length-1];

这很尴尬,但实际上没有其他方法可以做到这一点,除非你事先知道字符串的长度。

String sentence = "Any simpler way to get the last element of a Java array?";
String lastToken = sentence.substring( sentence.lastIndexOf(" ") + 1);

如果你只做一次,那么Peter Lawrey的解决方案更短,尽管在我看来它比原始版本更难理解。

如果你在多个地方这样做,那么以下是更好的:

public String lastToken(String str, String separatorRegex) {
    String tokens[] = str.split(separatorRegex);
    return tokens[tokens.length - 1];
}

然后

String lastToken = lastToken(sentence, " ");

…这比任何聪明的黑客都要优雅……国际海事组织。


我更一般的观点是,试图使一行代码更短的时间可能是浪费时间…或者更糟:

  • 从其他人阅读你的代码的角度来看,一行还是两行是无关紧要的。
  • 如果让行变短的聪明的hack是模糊的,那么你实际上做了一件坏事…从下一个阅读/维护你的代码的人的角度来看。
  • 如果巧妙的破解比不优雅的版本效率低,那么可能已经引入了性能问题。

但是,如果您在许多地方重复这行代码(或类似的代码),那么最好的解决方案是使用过程抽象。编写一个静态或实例方法…一旦……并多次调用

最新更新