news 2026/4/25 16:54:44

Java判断一个字符串是否是数组字符串

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java判断一个字符串是否是数组字符串

1.JSON数组格式判断

importcom.google.gson.JsonParser;importcom.google.gson.JsonSyntaxException;publicclassArrayStringChecker{// 方法1:使用Gson库判断是否是JSON数组publicstaticbooleanisJsonArrayString(Stringstr){if(str==null||str.trim().isEmpty()){returnfalse;}Stringtrimmed=str.trim();// JSON数组必须以 '[' 开头,以 ']' 结尾if(!trimmed.startsWith("[")||!trimmed.endsWith("]")){returnfalse;}try{// 使用Gson尝试解析JsonParser.parseString(trimmed).getAsJsonArray();returntrue;}catch(JsonSyntaxException|IllegalStateExceptione){returnfalse;}}// 方法2:简单正则表达式判断publicstaticbooleanisSimpleJsonArray(Stringstr){if(str==null||str.trim().isEmpty()){returnfalse;}Stringtrimmed=str.trim();returntrimmed.startsWith("[")&&trimmed.endsWith("]");}// 方法3:判断是否有数组格式的内容publicstaticbooleanisArrayString(Stringstr){if(str==null||str.trim().isEmpty()){returnfalse;}Stringtrimmed=str.trim();// 检查是否是JSON数组格式if(trimmed.startsWith("[")&&trimmed.endsWith("]")){// 获取数组内容部分(去掉两端的括号)Stringcontent=trimmed.substring(1,trimmed.length()-1).trim();// 空数组 []if(content.isEmpty()){returntrue;}// 检查内容格式(简单判断)// 数组元素之间用逗号分隔,元素可以是数字、字符串等String[]elements=content.split(",");for(Stringelement:elements){Stringelem=element.trim();// 这里可以添加更复杂的元素格式验证if(elem.isEmpty()){returnfalse;// 不允许空元素(除非是最后一个?)}}returntrue;}returnfalse;}publicstaticvoidmain(String[]args){// 测试用例String[]testCases={"[1,2,3,4,5]",// true"[\"a\",\"b\",\"c\"]",// true"[]",// true"[1, 2, 3]",// true"[1,2,3,]",// false(尾随逗号在JSON中无效)"1,2,3,4,5",// false"{'a':1,'b':2}",// false"[1,2,three]",// true(但某些验证可能要求引号)null,// false"",// false" [1,2,3] "// true};for(Stringtest:testCases){System.out.println("输入: \""+test+"\"");System.out.println("isJsonArrayString: "+isJsonArrayString(test));System.out.println("isSimpleJsonArray: "+isSimpleJsonArray(test));System.out.println("isArrayString: "+isArrayString(test));System.out.println("---");}}}

2.使用Jackson库判断

importcom.fasterxml.jackson.databind.ObjectMapper;importcom.fasterxml.jackson.core.JsonProcessingException;publicclassJacksonArrayChecker{privatestaticfinalObjectMappermapper=newObjectMapper();publicstaticbooleanisJsonArrayWithJackson(Stringstr){if(str==null||str.trim().isEmpty()){returnfalse;}Stringtrimmed=str.trim();if(!trimmed.startsWith("[")||!trimmed.endsWith("]")){returnfalse;}try{// 尝试解析为JSON数组mapper.readTree(trimmed).isArray();returntrue;}catch(JsonProcessingExceptione){returnfalse;}}}

3.自定义分隔符的数组字符串判断

publicclassCustomArrayChecker{// 判断是否是逗号分隔的数组字符串publicstaticbooleanisCommaSeparatedArray(Stringstr){if(str==null||str.trim().isEmpty()){returnfalse;}Stringtrimmed=str.trim();// 如果以方括号开头结尾,先去掉它们if(trimmed.startsWith("[")&&trimmed.endsWith("]")){trimmed=trimmed.substring(1,trimmed.length()-1).trim();}// 检查是否包含逗号分隔的元素String[]elements=trimmed.split(",");if(elements.length==0){returnfalse;}// 验证每个元素都不为空(允许空格)for(Stringelement:elements){if(element.trim().isEmpty()){returnfalse;}}returnelements.length>0;}// 通用分隔符判断publicstaticbooleanisDelimitedArray(Stringstr,Stringdelimiter){if(str==null||str.trim().isEmpty()||delimiter==null){returnfalse;}Stringtrimmed=str.trim();// 如果以特定括号包裹if(trimmed.startsWith("[")&&trimmed.endsWith("]")){trimmed=trimmed.substring(1,trimmed.length()-1).trim();}String[]elements=trimmed.split(delimiter);// 验证分隔符确实存在if(elements.length<=1&&!trimmed.contains(delimiter)){returnfalse;}// 验证每个元素for(Stringelement:elements){if(element.trim().isEmpty()){returnfalse;}}returnelements.length>0;}}

4.完整的验证工具类

importjava.util.regex.Pattern;publicclassArrayStringValidator{// 正则表达式验证简单的数组格式privatestaticfinalPatternJSON_ARRAY_PATTERN=Pattern.compile("^\\s*\\[.*\\]\\s*$");privatestaticfinalPatternNUMBER_ARRAY_PATTERN=Pattern.compile("^\\s*\\[\\s*\\d+(\\s*,\\s*\\d+)*\\s*\\]\\s*$");privatestaticfinalPatternSTRING_ARRAY_PATTERN=Pattern.compile("^\\s*\\[\\s*\"[^\"]*\"(\\s*,\\s*\"[^\"]*\")*\\s*\\]\\s*$");/** * 判断是否是数组格式的字符串 */publicstaticbooleanisArrayFormat(Stringstr){returnstr!=null&&JSON_ARRAY_PATTERN.matcher(str).matches();}/** * 判断是否是数字数组字符串 */publicstaticbooleanisNumberArrayString(Stringstr){returnstr!=null&&NUMBER_ARRAY_PATTERN.matcher(str).matches();}/** * 判断是否是字符串数组字符串 */publicstaticbooleanisStringArrayString(Stringstr){returnstr!=null&&STRING_ARRAY_PATTERN.matcher(str).matches();}/** * 安全地将数组字符串转换为字符串数组 */publicstaticString[]parseToStringArray(StringarrayStr){if(!isArrayFormat(arrayStr)){thrownewIllegalArgumentException("不是有效的数组格式字符串");}Stringcontent=arrayStr.trim().substring(1,arrayStr.length()-1)// 去掉方括号.trim();if(content.isEmpty()){returnnewString[0];}// 处理引号和逗号returncontent.split("\\s*,\\s*");}}

5.使用示例

publicclassMain{publicstaticvoidmain(String[]args){// 使用示例Stringtest1="[1,2,3]";Stringtest2="[\"apple\",\"banana\"]";Stringtest3="1,2,3";Stringtest4="[]";Stringtest5="[1, 2, 3, ]";// 注意尾随逗号System.out.println("test1 是JSON数组: "+ArrayStringChecker.isJsonArrayString(test1));System.out.println("test2 是JSON数组: "+ArrayStringChecker.isJsonArrayString(test2));System.out.println("test3 是JSON数组: "+ArrayStringChecker.isJsonArrayString(test3));System.out.println("test4 是JSON数组: "+ArrayStringChecker.isJsonArrayString(test4));System.out.println("test5 是JSON数组: "+ArrayStringChecker.isJsonArrayString(test5));System.out.println("\n使用自定义分隔符检查:");System.out.println("test3 是逗号分隔数组: "+CustomArrayChecker.isCommaSeparatedArray(test3));}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 6:40:02

Open-AutoGLM微信自动化实战教程(从零到精通必看)

第一章&#xff1a;Open-AutoGLM微信自动化实战概述Open-AutoGLM 是一个基于大语言模型与自动化控制技术的开源框架&#xff0c;专为实现微信客户端的智能化操作而设计。它结合了自然语言理解能力与图形用户界面&#xff08;GUI&#xff09;自动化技术&#xff0c;能够在无需人…

作者头像 李华
网站建设 2026/4/23 18:48:42

Java毕设项目推荐-基于javaweb校园兼职招聘系统的设计与实现基于JavaWeb的校园招聘管理系统简历投递管理【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/25 11:54:44

算法题 括号的分数

856. 括号的分数 问题描述 给定一个平衡括号字符串 s&#xff0c;按下述规则计算该字符串的分数&#xff1a; () 得 1 分AB 得 A B 分&#xff0c;其中 A 和 B 是平衡括号字符串(A) 得 2 * A 分&#xff0c;其中 A 是平衡括号字符串 返回字符串 s 的分数。 示例&#xff…

作者头像 李华
网站建设 2026/4/23 14:34:30

Java计算机毕设之基于JavaWeb的校园招聘管理系统高校校园招聘信息服务系统 (完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/23 6:42:55

温度影响精度?高精度模拟量采集模块适配攻略来了

高精度模拟量采集模块的核心功能是将温度、湿度、压力、电流等物理量转换为标准模拟信号(如4-20mA、0-10V)并精准采集&#xff0c;其应用环境温度直接影响采集精度、稳定性和使用寿命。一、应用场景 高精度模拟量采集模块的应用环境温度需与模块自身工作温度范围匹配&#xff0…

作者头像 李华
网站建设 2026/4/25 13:31:25

ERP企业资源管理系统代码(Java)

1. 仓库管理模块物料分类&#xff1a;采用ABC/XYZ多维分类法&#xff0c;结合物料属性与消耗规律&#xff0c;建立动态管理档案。追溯管控&#xff1a;通过条码/RFID技术实现全生命周期追溯&#xff0c;支持批次号与保质期管理。作业优化&#xff1a;WMS系统智能分配库位&#…

作者头像 李华