在java中拆分两个字母的字符串

时间:2013-01-09 18:41:43

标签: java string split

我只是想把一个字符串分成两个较小的字符串。看起来这很容易,但由于某种原因,我无法弄明白。我试图分裂的一个例子是:

AA
BB
DD
FF
TT
EE
SE
GR

这些值当前在ArrayList中,我希望它们分成两个arraylists

A                A
B                B
D                D

我试过这个

prse = calls.get(t).split(""); //also tried prse = calls.get(t).split("", -1);
            call1.add(prse[0]);
            call2.add(prse[1]);

但它让我的arraylists充满了空洞的角色。 (印刷[] [,] [,,] [,,,] [,,,,])

然后我尝试了

    String split = calls.get(t).substring(0,1); //This is 285 that is puking
    String split2 = calls.get(t).substring(1,2);
                System.out.println(split);
                call1.add(split);
                System.out.println("1: " + call1);
                call2.add(split2);
                System.out.println("2: " + call2);

这可以达到一定程度,但随后死于可怕的死亡:

1: [F, P, T, B, F, D, S, G, G, G, Z, S, Q, E, F, H, L, P, O, L, G, B, V, F, W, Q, T, H, G, E, R, T, Y, C, G, D, C, H, C, A]
2: [o, G, U, U, Y, Y, T, T, T, T, T, R, E, S, G, J, H, C, H, H, H, G, C, J, H, D, G, J, H, D, R, G, V, C, G, V, V, D, V, V]

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
        at java.lang.String.substring(String.java:1946)
        at print.Reader.ffy(Reader.java:285)
        at print2.Print2.main(Print2.java:48)

有人能建议一个更好的方法吗(或者向我解释我做错了什么)? 笔记: 我想将拆分字母放入他们自己的独立ArrayList字符串中(由于以后的用法)。所以我宁愿不使用charArray。

3 个答案:

答案 0 :(得分:1)

你可以这样做:

String inData = prse = calls.get(t);
call1.add("" + inData.charAt(0));
call2.add("" + inData.charAt(1));

这会直接抓取第一个和第二个字符并将它们转换为字符串。

如果你想要一个char数组列表,你不必转换为String,取决于你想要对输出做什么。

StringBuilder可以.append一个char,并toString结果。

希望这有帮助!

答案 1 :(得分:1)

        prse = calls.get(t).split("");
        call1.add(prse[0]);
        call2.add(prse[1]);

当你用空白字符串=>分割时“”,你得到的第一个字符串是空白的(“”)。 例如:“AB”prse [0] =“”,prse [1] =“A”,prse [2] =“B”

答案 2 :(得分:1)

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1

^^表示传递给substring方法的索引1超出范围,即你的数组中有一个字符串(可能就在“AV”之后)只有零个或一个字符。

另外,“substring(int beginIndex,int endIndex)”是一个很好的方法,但为什么不使用“charAt(int index)”呢?