news 2026/8/9 0:43:46

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/8/7 13:31:47

2025必备10个降AIGC工具,继续教育人速看!

2025必备10个降AIGC工具&#xff0c;继续教育人速看&#xff01; AI降重工具&#xff1a;让论文更“自然”&#xff0c;让学术更“真实” 在当前的学术环境中&#xff0c;随着AI技术的广泛应用&#xff0c;越来越多的论文开始受到AIGC&#xff08;人工智能生成内容&#xff09;…

作者头像 李华
网站建设 2026/8/2 6:29:51

summary 2025

与编程打交道4年多&#xff0c;现在回头看&#xff0c;感觉很长的一段时间内&#xff0c;我由于学习方法不当&#xff0c;导致低效率&#xff0c;事倍功半&#xff1a; 方法v1.0:只看不敲&#xff0c;试图记住逻辑。当时我认为写一遍费时间&#xff0c;认为像解数学题一样&…

作者头像 李华
网站建设 2026/7/21 7:41:37

4-12路模拟量采集模块:电网智能的“精准核心”

高精度模拟量采集模块是电力系统数字化与保护控制的核心感知单元&#xff0c;负责将PT/CT二次侧电压/电流、温度、振动等模拟量转为高保真数字量&#xff0c;支撑保护速动、计量结算、状态监测与新能源并网控制&#xff0c;在变电站、发电厂、配网与储能/光伏/风电场站广泛落地…

作者头像 李华
网站建设 2026/8/9 0:05:02

空气质量监测不精准?高精度模拟量采集模块给出智能家居解决方案

高精度模拟量采集模块是智能家居系统的核心感知单元&#xff0c;负责将温湿度、光照、气体浓度、人体感应、能耗等模拟信号&#xff0c;转化为高保真数字信号&#xff0c;为家电联动、节能控制、安全防护提供精准数据支撑&#xff0c;让家居从“被动响应”升级为“主动智能”&a…

作者头像 李华
网站建设 2026/8/8 11:47:27

【新】基于SSM的旅游攻略网站【源码+文档+调试】

&#x1f495;&#x1f495;发布人&#xff1a; 星河码客 &#x1f495;&#x1f495;个人简介&#xff1a;混迹java圈十余年&#xff0c;精通Java、小程序、数据库等。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xff0c;springboot等项目&…

作者头像 李华