如何在一行中检索以字符分隔的字符串的第n个值?

如果字符串以'.'为分隔符,并且我希望获取一个字符串a.b.c并在Python语言中检索c,我只需执行以下操作: 'a.b.c'.split('.')[-1].

看起来,Java中的类似功能是:

String beforeSplit = "a.b.c";
String[] parts = beforeSplit.split("\\.");
String afterSplit = parts[parts.length - 1];

有没有办法在不使用中间变量/字符串存储parts的情况下将其合并到一行表达式中?例如:

String consolidated = 'a.b.c'.split("\\.")[this.length -1];

在做了一些实验之后,在一行中引用前面结果的返回值this似乎不是一种可操作的方式.

我怀疑这会导致某种形式的难看的闭合,但也许有一种我不知道的更容易的方法?

推荐答案

我自然而然地想不出一个优雅的方法,除了用正则表达式替换:

String lastPart = "a.b.c".replaceAll("^.*?([^\\.]*)$","$1");

或使用lastindexOf

String lastPart = "a.b.c".substring("a.b.c".lastIndexOf('.') + 1);

Java相关问答推荐

Listview—在Android Java中正确链接项目时出错

Java List with all combinations of 8 booleans

Apache POI:使用反射获取zoom 级别

为什么我要创建一个单独的互斥体/锁对象?

RESTful框架类字段是安全的还是不安全的

Hibernate EmptyInterceptor可以工作,但不能拦截器

如何修复PDF重建过程中的文本定位

OpenGL ES 3.0-纹理黑色

try 判断可选参数是否为空时出现空类型安全警告

使用迭代器遍历HashMap不会因IF条件而停止

Kotlin-仅替换字符串中最后一个给定的字符串

如何在Spring Security中设置一个任何人都可以打开的主页?

按长度排序字符串数组

没有Google Play服务,Firebase Auth无法工作

由于可为null,无法在kotlin中实现java接口

将@Transactional添加到Spring框架中链下的每个方法会产生什么效果?

使用原子整数的共享计数器并发增量

将天数添加到ZonedDateTime不会更改时间

为什么 Random() 的行为不符合预期?

Java ModbusRTU写寄存器