无法正确地将Array转换为String列表

时间:2014-09-09 20:53:32

标签: java string

有固定长度的字符串,每条记录必须吐出15个字符。结果应该放在List中,但似乎整个字符串总是放在List中的0位置。

Arrays.asList(a1.substring(1,324).split("[a-zA-Z]{20}"))

为什么?

更新:

List<String> l =  Arrays.asList("1111111111     1119999999                                                                                              ".split("[0-9]{15}"));

2 个答案:

答案 0 :(得分:3)

拆分正则表达式应该是:

String[] arr = str.split("(?<=\\G.{20})");

以上每20个字符分割str

例如,下面的代码为每15个字符拆分str:

 String str ="hkdhadhkshdkhskhdkashdkasgi2oyeihsadkahdkashdlkhas";
             List<String> list = Arrays.asList(str.split("(?<=\\G.{15})"));
            System.out.println(list);

打印:

[hkdhadhkshdkhsk, hdkashdkasgi2oy, eihsadkahdkashd, lkhas]

答案 1 :(得分:0)

从你的问题:

  

有固定长度的字符串,每条记录必须吐出15个字符。结果应放在List

String.split()并不适合这样的事情。它被设计成在分隔符上分割,每15个字符&#34;不是。

您正在寻找String.substring()中的功能,该功能会返回String,即[beginIndex, endIndex)之间的序列。

使用这种方法:

public static List<String> splitByIndex(String toSplit, int index) { 
    List<String> result = new ArrayList<String>(); 
    for (int i = 0; i < toSplit.length(); i += index) { 
        if (i + index < toSplit.length()) {
            result.add(toSplit.substring(i, i + index));
        } else {
            result.add(toSplit.substring(i, toSplit.length() - 1));
        }
    }
    return result; 
}

您可以将String拆分为List<String>一定数量的字符。这个示例代码:

String a1 = "I'm the fixed length string that needs to be split by 15 characters.";
List<String> list = splitByIndex(a1, 15);
System.out.println(list);

将输出:

[I'm the fixed l, ength string th, at needs to be , split by 15 cha, racters]