news 2026/4/23 15:15:09

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/23 12:11:51

【计算机毕业设计案例】基于JavaWeb的校园招聘管理系统校园求职招聘系统系统(程序+文档+讲解+定制)

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

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

Open-AutoGLM PC版隐藏功能曝光(90%用户不知道的5个高阶用法)

第一章&#xff1a;Open-AutoGLM PC版隐藏功能曝光概述近期&#xff0c;Open-AutoGLM PC版在开发者社区中引发广泛关注&#xff0c;其未公开的隐藏功能逐步被挖掘。这些功能不仅提升了本地大模型调用效率&#xff0c;还增强了与系统级应用的深度集成能力&#xff0c;展现出强大…

作者头像 李华
网站建设 2026/4/23 12:20:53

【课程设计/毕业设计】基于javaweb+mysql的校园招聘平台招聘管理系统基于JavaWeb的校园招聘管理系统【附源码、数据库、万字文档】

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

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

降aigc率最简单有效的方法,看着一篇就够了~

一、现在的真实情况&#xff1a;查重过了&#xff0c;论文却被卡 AI 率 这两年&#xff0c;很多同学都会遇到一个很反直觉的情况&#xff1a; 重复率 5%–10%&#xff0c;老师点头 AI 率 40%–70%&#xff0c;直接打回 问题不在你“是不是抄袭”&#xff0c;而在于—— 现在…

作者头像 李华
网站建设 2026/4/23 13:44:28

海豹云创建K8S集群

我会为你详细讲解基于 sealy 工具&#xff08;Sealyun 集群管理工具&#xff09;、通过 clusterfile 配置文件指定机器搭建 K8s 集群的完整流程&#xff0c;包括环境准备、配置编写、集群部署和验证。一、核心前提&#xff1a;安装 sealy 工具&#xff08;任意一台控制机 / 目标…

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

智慧农业气象监测系统应用方案

一、项目背景 农业生产与气象条件密切相关&#xff0c;气象灾害是影响农业丰产增收的核心制约因素之一。当前传统农业气象监测模式存在诸多痛点&#xff1a;监测滞后&#xff0c;响应时间长;数据片面&#xff0c;难以覆盖大气-冠层-土壤全维度;报警不及时&#xff0c;传统预报平…

作者头像 李华