java - 使用常规表达式拆分 Java 字符串
问题描述
我远未掌握正则表达式,但我想在第一个和最后一个下划线处拆分字符串,例如用正则表达式在第一个和最后一个下划线处拆分字符串
"hello_5_9_2018_world"
to
"hello"
"5_9_2018"
"world"
我可以将它拆分为最后一个下划线
String[] splitArray = subjectString.split("_(?=[^_]*$)");
但我无法弄清楚如何拆分第一个下划线。
谁能告诉我如何做到这一点?
谢谢大卫
解决方案
您可以在没有正则表达式的情况下实现这一点。您可以通过查找第一个和最后一个索引_
并基于它们获取子字符串来实现此目的。
String s = "hello_5_9_2018_world";
int firstIndex = s.indexOf("_");
int lastIndex = s.lastIndexOf("_");
System.out.println(s.substring(0, firstIndex));
System.out.println(s.substring(firstIndex + 1, lastIndex));
System.out.println(s.substring(lastIndex + 1));
以上印刷品
hello
5_9_2018
world
笔记:
如果字符串没有两个_
,您将得到一个StringIndexOutOfBoundsException
.
为了防范它,您可以检查提取的索引是否有效。
如果
firstIndex
==lastIndex
==-1
则表示字符串没有任何下划线。如果
firstIndex
==lastIndex
则字符串只有一个下划线。
推荐阅读
- r - 按模式反连接
- pandas - Pandas中重排Multidex(二级multidex到二级单级列名)
- ios - 在 Swift 中解析动态可选键值 JSON
- javascript - 从对象数组中删除元素的最快方法是什么
- linker - 为我的可执行文件使用预构建的静态/共享库:Android makefile
- java - 如何将可绘制矢量资产设置为我的活动背景?
- javascript - 如何批量创建百万级数据?
- machine-learning - 提取 tar.gz 文件(数据集)
- apache-spark - 内存管理 Pyspark
- numpy - 如何在keras层的调用方法中保存numpy数组