Oracle java和Android不以同样的方式处理split()

时间:2018-02-07 07:56:32

标签: java android

以下功能非常简单。它将采用输入字符串。然后浏览字符串并将其拆分为4个字符的块,然后将每20个字符分成不同的行。

我遇到的奇怪的事情是这个函数在不同平台上的处理方式不同。例如,如果我在我的Android手机上运行这个,我得到了正确的结果,一眼就看起来很奇怪,因为我会在第一个块中获得5个字符。这是我的计算机上用oracle java发生的事情。所以我将i的第一个声明更改为i = 1,这可以在我的计算机上运行,​​但不能在我的Android手机上运行。

为什么?

public String fixString(String input) {
    int i = 0;
    String result = "";
    for(String s : input.split("")) {
        result += s;
        if(i != 0 && i % 4 == 0) {
            result += " ";
            if(i % 20 == 0) {
                result += "\n";
            }
        }
        i++;
    }
    return result;
}

输入字符串:

tfJ8CRxisuQQGY3KRcv3r8QRxXVAmHwjL3FvAwjAwLLbMvtcVrUEBLuCzMYW7JJ6n6kVJwmzP 8Jqyjx4PiFscTuzEeaCcYLeaBT3tV5kr8Z

PC输出:

tfJ8C Rxis uQQG Y3KR cv3r 
8QRx XVAm HwjL 3FvA wjAw 
LLbM vtcV rUEB LuCz MYW7 
JJ6n 6kVJ wmzP 8Jqy jx4P 
iFsc TuzE eaCc YLea BT3t 
V5kr 8Z

Android输出:

I/System.out: tfJ8 CRxi suQQ GY3K Rcv3 
I/System.out: r8QR xXVA mHwj L3Fv AwjA 
I/System.out: wLLb Mvtc VrUE BLuC zMYW 
I/System.out: 7JJ6 n6kV Jwmz P8Jq yjx4 
I/System.out: PiFs cTuz EeaC cYLe aBT3 
I/System.out: tV5k r8Z

1 个答案:

答案 0 :(得分:0)

似乎EJP对分裂功能是正确的。 更改了我的代码以获取char数组,而且工作正常。

public String fixString(String input) {
    int i = 1;
    String result = "";
    for(char s : input.toCharArray()) {
        result += s;
        if(i != 0 && i % 4 == 0) {
            result += " ";
            if(i % 20 == 0) {
                result += "\n";
            }
        }
        i++;
    }
    return result;
}