Java解析括号内⼦字符串的内容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 = Patternpile(pattern).matcher(input);
while(matcher.find()){
String output = up(1);
log.info("output={}", output);
}
正则解释:
\\(: 表⽰字符(
(: 开始匹配组
[: 中括号表⽰可选内容
^: 表⽰不是后续字符
): 在前⾯加上 ^, 表⽰除了 “ )” 的所有字符
+: 表⽰1个或多个[]括号内的字符集
): 停⽌匹配组
\\): 表⽰关闭括号
如果明确知道有⼏个括号也可以简化:
String input ="test data (测试)data";
String [] outs = input.split("[\\(\\)]");
log.info(outs[1]);
2.3. 第三⽅库
这⾥使⽤ org.apachemons.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内置⽅法定位,使⽤正则表达式以及第三⽅库进⾏解析。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。