String.split(字符串模式)Java方法未按预期工作
我正在使用String.split()将一些字符串分割为IP,但其String.split(字符串模式)Java方法未按预期工作,java,string,split,string-split,Java,String,Split,String Split,我正在使用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 re
返回空数组
,因此我使用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();
}
//过滤器IP(“196.168.0.1 127.0.0.1 255.23.44.1 100.168.100.1 90.168.0.1”、“168”);
公共静态字符串筛选器IP(字符串IP、字符串筛选器){
字符串resultado=“”;
字符串[]lista=ips.split(“”);
for(int c=0;c
它应该将字符串[]返回为{“196”、“168”、“0”、“1”}
…使用
String[] ipCorta = lista[c].split("\\.");
在正则表达式中,
匹配任何字符。
如果要匹配点,必须将其转义。\\\.拆分可用于正则表达式。'.'在正则表达式中,符号是单个字符。要使用split在实际点上拆分,必须像这样转义:
split(\\”)
String.split()
将正则表达式作为参数,因此必须转义句点(与任何内容匹配)。因此,请改用split(\\”)
。这可能会帮助您:
public static void main(String[] args){
String ips = "196.168.0.1 127.0.0.1 255.23.44.1 100.168.100.1 90.168.0.1";
String[] lista = ips.split(" ");
for(String s: lista){
for(String s2: s.split("\\."))
System.out.println(s2);
}
}
你的陈述
lista[c].split(".")
将第一个字符串“196.168.0.1”
拆分为任何(
)字符,因为它以一个作为参数
但是,得到空数组的原因是,拆分也会删除结果中所有尾随的空字符串
例如,考虑下面的语句:
String[] tiles = "aaa".split("a");
String[] tiles = "aaab".split("a");
这将把字符串分成三个空值,如[,]
。由于后面的空值将被删除,因此数组将保持为空[]
如果您有以下声明:
String[] tiles = "aaa".split("a");
String[] tiles = "aaab".split("a");
它将字符串拆分为三个空值和一个填充值b
如[,“b”]
由于没有尾随的空值,因此结果将保留这四个值
为了消除这样一个事实,即您不想在每个字符上分割,您必须像这样转义正则表达式:
lista[c].split("\\.")
转义:lista[c].split(“\”)