有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中字符串生成器到字符串数组

我正在尝试用java将字符串生成器转换为字符串数组。我使用了到字符串方法将Stringbuilder转换为字符串,然后使用拆分方法将其转换为字符串数组

我在数组大小方面遇到了一些问题。字符串生成器的输出如下:0,,1,,,,,,,,,,2,,,。实际上它包含15个元素,但它显示stringbuilder的大小为18。转换成字符串数组后,它的大小显示为13

我的方法错了吗?是否有其他方法将字符串生成器转换为字符串数组

StringBuilder output = new StringBuilder();

for (String str : listToSearch) {
    int index = findIndex(headerArrayList, str);
    if (index > -1) {
        output.append(index);
    } else {
        output.append(str);
    }
    output.append(",");
}

String out = output.toString();
String[] destIndexArray = out.split(",");

{}方法:

private static int findIndex(List<String> headerList, String element) {
    for (int i = 0; i < headerList.size(); i++) {
        if (headerList.get(i).equals(element)) {
            return i;
        }
    }
    return -1;
}

共 (3) 个答案

  1. # 1 楼答案

    Am I doing wrong method?

    您的代码有许多地方需要改进。我建议:

    1. 不要重新发明轮子,而是寻找现有的API:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#indexOf(java.lang.Object)

    1. 您只能添加String而不是索引

    for (String str :listToSearch) {
        int index=headerArrayList.indexOf(str);
        if (index < 0) {
            output.append(str);
            output.append(",");
        }
        // if(!headerArrayList.contains(str))
        // output.append(str);
        // output.append(",");
    }
    

    1. List<String>代替StringBuilder

    Is there is other method to convert String builder to String Array?

    是的,但是如果你遵循以上几点,你就不需要它了。但既然你问了。见此:How can a StringBuilder best be converted to a String[]?

  2. # 2 楼答案

    请参见使用stringbuilder并再次操作它并将其转换为数组不是一个好主意。而是将所有内容插入字符串列表,要检查字符串是否为整数,请使用以下命令:

    str.matches("^-?\\d+$");
    

    如果你想把它转换成数组,你可以这样做

    String[] str = list.toArray(new String[list.size()])
    
  3. # 3 楼答案

    你只是用一行代码试过吗

    stringBuilder.toString.split("delimiter")

    在你的情况下,可能看起来像

    destIndexArray = output.toString.split(",")
    

    如果这不起作用,那么您可以这样做,而不是转换为StringBuilder

    List<String> output = new List<String>();
    
    for (String str : listToSearch) {
    int index = findIndex(headerArrayList, str);
    if (index > -1) {
        output.add(index);
    } else {
        output.add(str);
    }
    }
    

    我认为在这种情况下,您可以对列表执行任何操作,而不需要分隔符。希望有帮助