Java 解析括号内子字符串的内容
Java 解析括号内子字符串的内容本文介绍Java几种方式解析字符串中括号内字串。1. 问题描述假设String input = "test data (测试)",现在需要获取括号内的测试字串。也有可能给定字符串包括多个括号组:String input = "test data (测试)(data)" ,解析结果为:测试 和 data 。2. 多种方式实现2.1直接定位我们首先想到的直接使用 St
Java 解析括号内子字符串的内容
本文介绍Java几种方式解析字符串中括号内字串。
1. 问题描述
假设String input = "test data (测试)"
,现在需要获取括号内的测试
字串。
也有可能给定字符串包括多个括号组:
String input = "test data (测试)(data)"
,解析结果为:测试
和 data
。
2. 多种方式实现
2.1 直接定位
我们首先想到的直接使用 String的indexOf
方法进行定位:
String input = "test data (测试)";
String output = input.substring(input.indexOf("(") + 1 ,input.indexOf(")"));
log.info("output={}", output);
这种方法缺少灵活性,当有多个括号时不支持。
2.2. 正则方式
下面使用正则进行解析,支持多个括号组:
String input = "test data (测试)(data)";
String pattern = "\\(([^\\)]+)\\)";
Matcher matcher = Pattern.compile(pattern).matcher(input);
while (matcher.find()) {
String output = matcher.group(1);
log.info("output={}", output);
}
正则解释:
\\(
: 表示字符(
(
: 开始匹配组[
: 中括号表示可选内容^
: 表示不是后续字符)
: 在前面加上^
, 表示除了 “)
” 的所有字符+
: 表示1个或多个[]括号内的字符集)
: 停止匹配组\\)
: 表示关闭括号
如果明确知道有几个括号也可以简化:
String input = "test data (测试)data";
String [] outs = input.split("[\\(\\)]");
log.info(outs[1]);
2.3. 第三方库
这里使用 org.apache.commons.lang3
包中的StringUtils工具包,它提供了类似的实现:
String input0 = "test data (测试)";
String input1 = "test data (测试)(data)";
String output = StringUtils.substringBetween(input, "(", ")");
String [] out = StringUtils.substringsBetween(input1,"(", ")");
同时支持单个括号或多个括号组,且括号作为参数,使用简单不失灵活。
3. 总结
本文介绍了Java几种方式解析字符串中包括括号内的子字符串内容。直接使用Java String内置方法定位,使用正则表达式以及第三方库进行解析。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)