首页 > 解决方案 > 当我对字符串使用 split 方法时,为什么在我的字符串数组列表中添加了一个额外的空间

问题描述

我附上了我的代码和代码的输出。当我打印数组元素时,它没有显示任何空格,但是当这些元素被传输到 arrayList 时,我在每个元素之前得到这些空格,就好像它们在那里一样,因为实际字符串中的“/”

这是我的代码

public static void main(String[] args) {
    Scanner x = new Scanner(System.in);
    String n= "/www/abc/pqr/./com";
    String arr[] = n.split("/");
    ArrayList<String> list = new ArrayList<>();
    for(int i=0;i<arr.length;i++)
    {
        if(arr[i]!=".")
        {
            list.add(arr[i]);
        }
    }
    System.out.println(list);
}

输出是这样的:[, www, abc, pqr, ., com]

我还使用了 equals() 方法来比较字符串,但也没有运气。

这是我更新的代码

public class LTI {
    
    public static void main(String[] args) {
        Scanner x = new Scanner(System.in);
        String n = "/www/abc/../pqr/./com";
        String arr[] = n.split("/");
        ArrayList<String> list = new ArrayList<>();
        for (int i = 0; i < arr.length; i++) {
            if (!arr[i].isEmpty()) {
                if (!arr[i].equals(".")) {
                    if (arr[i].equals("..")) {
                        list.remove(i);
                    } else {
                        list.add(arr[i]);
                    }
                }
            }
        }
    }
}

但它显示索引 3 超出了长度 2 的范围

标签: javaarraylistsplit

解决方案


所以我假设你的问题是针对你在输出中得到的这些空格:

[, www, abc, pqr, ., com]
  ^    ^    ^    ^  ^ 

您看到的这些“空格”实际上并不是String列表中 s 的一部分,它们是在您隐式调用via时添加toString()的。ArrayListSystem.out.println(list)

AbstractCollection#toString()

返回此集合的字符串表示形式。字符串表示由集合元素的列表组成,按其迭代器返回的顺序排列,用方括号 ("[]") 括起来。相邻元素由字符“、”(逗号和空格)分隔。通过 String.valueOf(Object) 将元素转换为字符串。

因此,列表中的实际Strings 不包含这些空格,它们只是为了在打印时查看方便而添加的。

这是您更新的代码,它还解决了通过而不是String正确比较 s的问题。我还包括一个检查以从列表中删除空s:equals!=isEmpty()String

public static void main(String[] args) {
    String n = "/www/abc/pqr/./com";
    String arr[] = n.split("/");
    ArrayList<String> list = new ArrayList<>();
    for (int i = 0; i < arr.length; i++) {
        if (!(arr[i].equals(".") || arr[i].isEmpty())) {
            list.add(arr[i]);
        }
    }
    System.out.println(list);
}

输出:

[www, abc, pqr, com]

推荐阅读