首页 > 解决方案 > 使用常规表达式拆分 Java 字符串

问题描述

我远未掌握正则表达式,但我想在第一个和最后一个下划线处拆分字符串,例如用正则表达式在第一个和最后一个下划线处拆分字符串

"hello_5_9_2018_world" 

to

"hello"
"5_9_2018"
"world"

我可以将它拆分为最后一个下划线

String[] splitArray = subjectString.split("_(?=[^_]*$)");

但我无法弄清楚如何拆分第一个下划线。

谁能告诉我如何做到这一点?

谢谢大卫

标签: javaregexstring

解决方案


您可以在没有正则表达式的情况下实现这一点。您可以通过查找第一个和最后一个索引_并基于它们获取子字符串来实现此目的。

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则字符串只有一个下划线。


推荐阅读