Java如何从ArrayList中提取指定参数col_c?
提取字符串中col_c字段值的解决方案
方法一:使用正则表达式直接匹配
由于每个字符串元素都包含col_c = "xxx"的固定格式,我们可以用正则表达式精准捕获引号内的目标值,代码实现如下:
import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ColCExtractor { // 预编译正则表达式,提升重复匹配效率 private static final Pattern COL_C_PATTERN = Pattern.compile("col_c = \"([^\"]+)\""); public static void main(String[] args) { List<String> data = new ArrayList<>(); data.add("{col_a = {\"a\":1,\"b\":2}, col_a = {\"a\":1,\"b\":2}, col_c = \"test\"}"); data.add("{col_a = {\"a\":1,\"b\":2}, col_a = {\"a\":1,\"b\":2}, col_c = \"test1\"}"); for (String item : data) { Matcher matcher = COL_C_PATTERN.matcher(item); if (matcher.find()) { // 捕获组1对应col_c的具体值 System.out.println(matcher.group(1)); } } } }
运行后输出:
test test1
方法二:转换为标准JSON后解析
如果后续需要处理更多字段,建议先将非标准字符串转换为标准JSON格式,再借助JSON库解析。这里以Gson为例:
- 引入Gson依赖(Maven示例):
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency>
- 代码实现:
import com.google.gson.JsonObject; import com.google.gson.JsonParser; import java.util.ArrayList; import java.util.List; public class ColCExtractor { public static void main(String[] args) { List<String> data = new ArrayList<>(); data.add("{col_a = {\"a\":1,\"b\":2}, col_a = {\"a\":1,\"b\":2}, col_c = \"test\"}"); data.add("{col_a = {\"a\":1,\"b\":2}, col_a = {\"a\":1,\"b\":2}, col_c = \"test1\"}"); for (String item : data) { // 将非标准的"键 = 值"格式替换为JSON标准的"键": 值格式 String standardJson = item.replaceAll("(\\w+) = ", "\"$1\": "); // 解析为JSON对象 JsonObject jsonObj = JsonParser.parseString(standardJson).getAsJsonObject(); // 提取col_c的值 System.out.println(jsonObj.get("col_c").getAsString()); } } }
注:原字符串存在重复的col_a键,JSON解析时会保留最后一次出现的键值对,但不影响col_c的提取。
内容的提问来源于stack exchange,提问作者Pedro Alves
相关产品推荐
相关产品推荐

