需要将字符串中带括号的元素取出,例如:221,33,(aa,22),(123,456),766,(755)
需要得到:aa,22,123,456,755;
使用字符串截取的时候突然思路短路了,使用正则 来实现:
import java.util.Arrays; import java.util.HashSet; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; /** * 将括号内的元素取出并放入集合中 * <P> * Example: * * <pre> * str="221,33,(aa,22),(123,456),766,(755)" * genXXX(str)=[aa,22,123,456,755] * </pre> * * @param str * 待处理的字符串 * @return */ private static Set<String> genXX(String str) { Set<String> set = new HashSet<String>(); Pattern p = Pattern.compile("\\(.*?\\)"); Matcher m = p.matcher(str); String[] array; String elem; while (m.find()) { System.out.println(m.group()); elem = m.group().replace('(', ' ').replace(')', ' ').trim(); array = StringUtils.split(elem, ','); set.addAll(Arrays.asList(array)); } return set; }
基础的东西居然一下子想不起来,真杯具啊,时候想了下,还是可以循环字符串解决:
/** * 将括号内的元素取出并放入集合中 * <P> * Example: * * <pre> * str="221,33,(aa,22),(123,456),766,(755)" * genXXX(str)=[aa,22,123,456,755] * </pre> * * @param str * 待处理的字符串 * @return */ private Set<String> genXXX(String str) { Set<String> set = new HashSet<String>(); String[] array; int indexLeft; int indexRight; String elem; for (int i = 0; i < str.length(); i++) { indexLeft = str.indexOf('(') + 1; indexRight = str.indexOf(')'); elem = str.substring(indexLeft, indexRight); str = str.substring(indexRight + 1); array = StringUtils.split(elem, ','); set.addAll(Arrays.asList(array)); } return set; }
相关推荐
标题和描述所提及的问题是关于如何在Mapper.xml文件中处理字符串形式的参数,这些参数由逗号分隔,并在`AND`语句中拼接`OR`子句来实现动态查询。这种场景在处理用户多选过滤条件时非常常见,比如在一个搜索框中,...
每个字符串都用单引号括起来,并且每个字符串之间用逗号分隔。 2. **定义新字符串**: - `newStr = 'example'`: 定义了一个新的字符串变量`newStr`,其值为`'example'`。 3. **检查字符串是否已存在**: - `if ~...
在JavaScript中,split()函数是一个非常实用的字符串处理方法,用于将字符串分割成子字符串数组。标准的split()方法允许用户通过一个特定的分隔符来分割字符串,但在很多实际编程场景中,我们需要按照多个分隔符对...
当调用`split(regex)`时,Java会找到所有与`regex`匹配的子串,并在它们之间分割原始字符串,返回一个包含子字符串的数组。 让我们通过一个简单的例子来理解`split()`的使用: ```java String str = "Hello,World!...
1. 字符串以大括号`{}`或方括号`[]`开始,表示一个对象或数组。 2. 对象由键值对组成,键和值之间用冒号`:`分隔,键值对之间用逗号`,`分隔。 3. 数组由值组成,值之间用逗号`,`分隔。 4. 键必须是双引号`"`包围的...
因此,确保你的代码能够有效且安全地处理这些字符串是非常重要的,这包括对字符串进行预处理、错误处理以及验证。在处理JSON数据时,还应考虑性能和资源消耗,避免不必要的对象创建和解析。通过合理地设计和使用JSON...
在SQL Server中,字符串处理是数据库管理中必不可少的一部分,它涉及到对文本数据的查询、分析和操作。以下是一些常见的SQL Server字符串处理函数及其详细解释: 1. **字符转换函数** - `ASCII()`:返回字符串中最...
循环遍历 `ids` 数组,将每个 ID 添加到 SQL 语句中,并正确处理分隔符(逗号)和括号的添加。 #### 3. 处理其他过滤条件 ```java if (type != null && !type.trim().equals("") && !type.equals("1")) { sb....
在C语言中,处理JSON字符串涉及到解析JSON文本为数据结构,以及将数据结构转换为JSON字符串。以下是对C语言中JSON字符串生成与解析的详细说明: 1. JSON数据格式: JSON是一种基于文本的格式,它使用键值对来表示...
JSON字符串通常包含键值对,用花括号包围,键与值之间用冒号分隔,键值对之间用逗号分隔。 在Java中,假设我们有一个名为`Video`的类,可能包含如下属性: ```java public class Video { private String title; ...
:jpg|png|jpeg)` 是一个非捕获组,用来匹配括号内的任意一个字符串,也就是文件的扩展名。 现在让我们来看如何将这个正则表达式修改为匹配不包含某几个字符的字符串。假设我们的目标是排除字符串中的“,"等符号,...
本工具专注于JSON的转化和格式化,旨在提供一个方便快捷的方式来处理JSON字符串,便于开发者进行数据分析和问题排查。 1. JSON的结构与基本元素: JSON由对象(Object)和数组(Array)两种基本类型构成。对象由...
一个JSON对象以大括号`{}`包围,其内部由键值对组成,键用双引号`""`包裹,值可以是字符串、数字、布尔值、数组、null或另一个JSON对象。数组则用方括号`[]`表示,元素之间用逗号分隔。 生成JSON字符串通常涉及两个...
1. **解析阶段**:将JSON字符串转换为抽象语法树(AST),如果字符串中包含非法字符、键值对格式不正确、缺少逗号或冒号、括号不匹配等问题,解析器会在这一步捕获错误。 2. **验证阶段**:检查生成的AST是否符合...
5. 错误处理:字符串计算器还需要处理输入错误,比如无效的运算符、缺失的括号、除数为零等情况。对于这些错误,应该有适当的机制进行捕获并给出用户友好的错误信息。 6. 性能优化:为了提高计算效率,可以使用缓存...
2. 键与值的规则:键是字符串,必须用双引号括起来,而值可以是字符串、数字、布尔值、数组、null或另一个JSON对象。例如: ``` "key": "value" ``` 3. 对象的键值对之间用逗号分隔,但最后一个键值对后面不能有...
在C#.NET编程中,正则表达式是一个强大的工具,用于处理字符串的匹配、查找、替换和拆分等任务。正则表达式是由特殊字符和普通字符组成的模式,用于匹配文本字符串。本教程将深入探讨如何使用C#.NET中的正则表达式...
1. **直接使用花括号**:这是最直观的方法,可以使用逗号分隔不同的字符串来构建数组。 ```matlab str_array = {'apple', 'banana', 'cherry', 'date'}; ``` 2. **通过字符数组转换**:如果你有一个由单引号包围...
在实际项目中,我们经常需要解析JSON字符串以获取其中的数据,这通常涉及到各种JSON解析库。在这个真实案例中,我们将深入探讨如何使用Gson库来解析复杂的JSON字符串。 Gson是Google提供的一个Java库,它能够将Java...
### 正则检测字符串知识点详解 #### 一、正则表达式基础概念 **正则表达式(Regular Expression)**是一种强大的文本模式匹配工具。它能够帮助我们在文本中找到符合特定模式的数据,常用于文本搜索、替换、提取等...