如何在一行代码中获取字符分隔字符串的第n个值?
一行代码获取字符分隔字符串的第n个值
Python 实现
对于以.分隔的字符串(如a.b.c),要获取最后一个值c,一行代码即可完成:
'a.b.c'.split('.')[-1]
Java 常规写法
Java中常规实现需要借助中间变量存储分割后的数组:
String beforeSplit = "a.b.c"; String[] parts = beforeSplit.split("\\."); String afterSplit = parts[parts.length - 1];
Java 一行实现方案
想要省去中间变量直接一行完成,this无法引用刚生成的数组(this指向当前类实例,而非分割后的数组对象),以下是几种简洁可行的方式:
1. 重复调用split(不推荐)
虽然能一行实现,但会执行两次字符串分割,性能较差:
String consolidated = "a.b.c".split("\\.")["a.b.c".split("\\.").length - 1];
2. Stream API(Java 8+)
利用Java 8引入的Stream API可以高效实现,兼顾简洁性与性能:
- 获取最后一个元素:
String consolidated = Arrays.stream("a.b.c".split("\\.")) .reduce((first, last) -> last) .orElse("");
- 获取指定索引的元素(比如第3个,索引为2):
String consolidated = Arrays.stream("a.b.c".split("\\.")) .skip(2) .findFirst() .orElse("");
3. 第三方工具类(Apache Commons Lang)
如果项目中已经引入Apache Commons Lang库,可借助StringUtils工具类实现更简洁的写法:
- 获取最后一个分隔后的元素:
String consolidated = StringUtils.substringAfterLast("a.b.c", ".");
- 获取指定索引的元素:
String consolidated = StringUtils.splitByWholeSeparator("a.b.c", ".")[2];
内容的提问来源于stack exchange,提问作者BurgeoningApe
相关产品推荐
相关产品推荐

