如何提取字符串中括号()内的内容?含多场景示例代码
嘿,这个需求太常见啦!我给你两种实用的实现方法,不管括号在字符串开头、中间还是结尾,都能稳稳提取出括号里的内容:
方法1:正则表达式(推荐,简洁高效)
正则表达式是处理这类字符串提取的利器,专门针对你的场景,我们可以用\\((.*?)\\)这个匹配规则:
\\(和\\):转义括号(因为括号在正则里是特殊字符),用来定位目标括号的位置(.*?):非贪婪匹配,精准捕获括号之间的所有内容(不会多拿也不会少拿)
下面是Java代码示例,直接就能跑:
public class ExtractBracketContent { public static void main(String[] args) { String name_and_code1 = "MountainBlues(MB)"; String name_and_code2 = "Rock(RoRo)Roll"; String name_and_code3 = "(TFT)TitForTat"; // 定义正则模式 java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\((.*?)\\)"); // 处理第一个字符串 java.util.regex.Matcher matcher1 = pattern.matcher(name_and_code1); if (matcher1.find()) { String content1 = matcher1.group(1); // 提取括号内的内容 System.out.println("提取结果1: " + content1); // 输出 MB } // 处理第二个字符串 java.util.regex.Matcher matcher2 = pattern.matcher(name_and_code2); if (matcher2.find()) { String content2 = matcher2.group(1); System.out.println("提取结果2: " + content2); // 输出 RoRo } // 处理第三个字符串 java.util.regex.Matcher matcher3 = pattern.matcher(name_and_code3); if (matcher3.find()) { String content3 = matcher3.group(1); System.out.println("提取结果3: " + content3); // 输出 TFT } } }
方法2:手动查找索引(适合不想用正则的场景)
如果你对正则不太熟悉,也可以用字符串的indexOf()和substring()方法手动定位括号位置:
- 先用
indexOf('(')找到左括号的索引 - 再用
indexOf(')')找到右括号的索引 - 最后用
substring()提取两者之间的内容
代码示例如下,还加了异常处理避免括号不存在的情况:
public class ExtractBracketContent { public static void main(String[] args) { String name_and_code1 = "MountainBlues(MB)"; String name_and_code2 = "Rock(RoRo)Roll"; String name_and_code3 = "(TFT)TitForTat"; // 提取第一个字符串的内容 String content1 = extractContent(name_and_code1); System.out.println("提取结果1: " + content1); // 提取第二个字符串的内容 String content2 = extractContent(name_and_code2); System.out.println("提取结果2: " + content2); // 提取第三个字符串的内容 String content3 = extractContent(name_and_code3); System.out.println("提取结果3: " + content3); } private static String extractContent(String str) { int startIndex = str.indexOf('('); int endIndex = str.indexOf(')'); // 检查括号是否存在且位置合法 if (startIndex != -1 && endIndex != -1 && endIndex > startIndex) { return str.substring(startIndex + 1, endIndex); } else { return "未找到有效括号内容"; // 或者返回null,根据你的需求调整 } } }
两种方法都能完美处理你给出的三个字符串,你可以根据自己的习惯选择哦~
内容的提问来源于stack exchange,提问作者Saroj
相关产品推荐
相关产品推荐

