news 2026/5/1 5:55:33

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/18 9:40:57

Open-AutoGLM沉思版下载后性能提升300%?真实压测数据曝光

第一章&#xff1a;Open-AutoGLM沉思版下载后性能提升300%&#xff1f;真实压测数据曝光近期&#xff0c;开源社区对“Open-AutoGLM沉思版”的关注度持续升温。该模型在公开发布后宣称通过架构优化与推理加速技术&#xff0c;在标准测试集上实现相较原版高达300%的性能提升。为…

作者头像 李华
网站建设 2026/4/20 5:41:10

你还在手动调试代码?Open-AutoGLM PC版自动修复能力惊艳了整个技术圈

第一章&#xff1a;你还在手动调试代码&#xff1f;Open-AutoGLM PC版自动修复能力惊艳了整个技术圈在软件开发过程中&#xff0c;调试长期占据开发者最多无效工时。如今&#xff0c;Open-AutoGLM PC版的发布彻底改变了这一局面。其内置的智能代码分析引擎能够实时扫描项目中的…

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

【仅限早期开发者】:Open-AutoGLM 9b私有化部署指南,抢占AI推理先机

第一章&#xff1a;Open-AutoGLM 9b 私有化部署的战略意义在当前企业对数据安全与模型可控性要求日益提升的背景下&#xff0c;Open-AutoGLM 9b 的私有化部署已成为大型组织构建自主AI能力的核心策略。私有化部署不仅保障了敏感业务数据不外泄&#xff0c;还允许企业根据实际需…

作者头像 李华
网站建设 2026/4/30 17:45:35

苹果用户必看!,Open-AutoGLM能否带来iPhone自动化革命?

第一章&#xff1a;苹果用户必看&#xff01;Open-AutoGLM能否带来iPhone自动化革命&#xff1f;随着人工智能技术的不断演进&#xff0c;自动化工具正逐步渗透到日常设备操作中。对于长期受限于封闭生态的苹果用户而言&#xff0c;一款名为 Open-AutoGLM 的开源框架悄然兴起&a…

作者头像 李华