加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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(".")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读