String.split(String pattern)Java方法未按预期工作
发布时间:2020-12-15 05:21:21 所属栏目:Java 来源:网络整理
导读:我正在使用String.split()将一些字符串划分为IP,但它返回一个空数组,所以我使用String.substring()修复了我的问题,但我想知道为什么不按预期工作,我的代码是: // filtrarIPs("196.168.0.1 127.0.0.1 255.23.44.1 100.168.100.1 90.168.0.1","168");public s
我正在使用String.split()将一些字符串划分为IP,但它返回一个空数组,所以我使用String.substring()修复了我的问题,但我想知道为什么不按预期工作,我的代码是:
// filtrarIPs("196.168.0.1 127.0.0.1 255.23.44.1 100.168.100.1 90.168.0.1","168"); public static String filtrarIPs(String ips,String filtro) { String resultado = ""; String[] lista = ips.split(" "); for (int c = 0; c < lista.length; c++) { String[] ipCorta = lista[c].split("."); // Returns an empty array if (ipCorta[1].compareTo(filtro) == 0) { resultado += lista[c] + " "; } } return resultado.trim(); } 它应该返回一个String []为{“196”.“168”.“0”.“1”} …. 解决方法
你的陈述
lista[c].split(".") 将任意(.)字符拆分第一个字符串“196.168.0.1”,因为String.split将regular expression作为参数. 但是,关键是,为什么要获得一个空数组,该分割还将删除结果中所有尾随的空字符串. 例如,请考虑以下语句: String[] tiles = "aaa".split("a"); 这会将String拆分为三个空值,如[,].由于事实,将删除尾随空值,该数组将保持为空[]. 如果您有以下声明: String[] tiles = "aaab".split("a"); 它会将String拆分为三个空值和一个填充值b,“b”] 为了摆脱这个事实,你不想分裂每个角色,你必须像这样逃避正则表达式: lista[c].split(".") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |