【问题标题】:Split a two letter string in java在java中拆分两个字母的字符串
【发布时间】:2012-12-24 00:43:33
【问题描述】:

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

AA
BB
DD
FF
TT
EE
SE
GR

这些值当前位于 ArrayList 中,我希望将它们拆分为两个数组列表

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]);

但它用空字符填充了我的数组列表。 (打印 [] [, ] [, , ] [, , , ] [, , , , ])

然后我尝试了

    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。

【问题讨论】:

  • 我认为split 方法在这里是非常过分的。您是否尝试过使用substring
  • @templatetypedef 他尝试使用substring
  • 我认为你在最后解析一个空字符串
  • @User 我认为你必须显示更多代码你在做什么
  • 检查ArrayList中String的长度,如果它的大小为0或1,请弄清楚你想要做什么但不要调用substring方法。

标签: java string split


【解决方案1】:
        prse = calls.get(t).split("");
        call1.add(prse[0]);
        call2.add(prse[1]);

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

【讨论】:

  • 感谢您的信息。我真的应该想通了。再次感谢
【解决方案2】:

你可以这样做:

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

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

如果您想要一个 char 数组列表,则不必转换为字符串,这取决于您要对输出做什么。

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

希望这会有所帮助!

【讨论】:

    【解决方案3】:
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
    

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

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

    【讨论】:

    • 这可以帮助我解决我遇到的第二个问题。其中一些确实是 0 或 1 个字符长。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    相关资源
    最近更新 更多