将字符串分成ArrayList

时间:2019-03-29 19:50:33

标签: java arrays string split

我正在尝试将String分成数组。整个程序应该将二进制文件转换为字符串,但是我遇到的问题是将字符串划分为数组。我觉得很愚蠢,因为这似乎很简单。二进制文件的格式为“ 0100100001001001”,而不是“ 01001000”和“ 01001001”。

public static ArrayList<String> divStr(String str,int div){

    String addable = "";
    ArrayList<String> ret = new ArrayList<String>();
    for(int i = 0; i < str.length();i++){
      addable += str.charAt(i);
      if(i % div == 0 && i != 0){
        ret.add(addable);
        addable = "";
      }
    }
    return ret;
  }

3 个答案:

答案 0 :(得分:1)

您可以将regex与split一起使用:

String[] ret = str.split("(?<=\\G.{" + div +"})");

如果您想返回List

public static List<String> divStr(String str, int div) {
    return Arrays.asList(str.split("(?<=\\G.{" + div +"})"));
}

例如,调用该方法:

System.out.println(divStr("0100100001001001", 8));
>> [01001000, 01001001]

如果您用div表示部件数量,则可以将代码更改为:

public static List<String> divStr(String str, int div) {
    int length = str.length() / div;
    return Arrays.asList(str.split("(?<=\\G.{" + length +"})"));
}

然后:

System.out.println(divStr("0100100001001001", 2));
>> [01001000, 01001001]

答案 1 :(得分:1)

您的代码有两个问题。
(1)条件parent是错误的,因为说detect_cancel,它将在i % div == 0 && i != 0时将前9个字符添加到列表中。
(2)如果字符串div = 8的长度不是i = 8的倍数,则列表中将遗漏一些字符。
因此更改为:

str

答案 2 :(得分:0)

问题出在 i%div 上,它在您的代码中只出现一次,因为它从0开始到
str.length = 15,应替换为(i + 1)%div

public static ArrayList<String> divStr(String str,int div){

    String addable = "";
    ArrayList<String> ret = new ArrayList<String>();
    for(int i = 0; i < str.length();i++){
      addable += str.charAt(i);
      if((i+1) % div == 0 && i != 0){
        ret.add(addable);
        addable = "";
      }
    }
    return ret;
  }