代码之家  ›  专栏  ›  技术社区  ›  Pspl

使用空数据拆分字符串

  •  1
  • Pspl  · 技术社区  · 7 年前

    我正在为我的公司开发一个应用程序 Java ( Android 平台)并遇到无法解决的问题。 事情是这样的:通过阅读 text file 我填补空缺 content 字符串中包含以下内容:

    String content = "";
    content = buffReader.readLine(); buffReader.close();
    

    这工作做得很好。这个 所容纳之物 字符串正确地填充了文件内容。此字符串的每一行数据都用 & 字符,所以我填充 lines 像这样的数组:

    String[] lines; 
    lines = content.split("&");
    

    同样,这里没有错误。然后,每个字段用一个 : 字符,我再次尝试以相同的方式填充下一个字符串:

    String line; String[] data;
    String data1 = ""; String data2 = ""; String data3 = ""; String data4 = "";
    
    for (int i = 0; i < lines.length; i++){
        line = lines[i];
        data = line.split(":");
        data1 = data[0];
        data2 = data[1];
        data3 = data[2];
        data4 = data[3];
    }
    

    如果文本是 A:B:C:D 代码运行良好。即使文本是 A:B::D 没关系 data3 变成 "" 如我所愿)。但是,如果文本是 A::: 代码不起作用并关闭应用程序。在这种情况下,我可以 data1 = data[0] 但对于其他每个步骤,都会出现错误。

    有人知道发生了什么吗?!我是不是遗漏了什么?谢谢。

    编辑:

    如果有人能解释为什么代码可以与 A:B:D 文本我是说!它确实有一个空文件,对吗?

    0 回复  |  直到 7 年前
        1
  •  1
  •   Radesh    7 年前

    您应该像这样使用split来防止删除空值

    for (int i = 0; i < lines.length; i++){
        line = lines[i];
        data = line.split(":",-1);
        data1 = data[0];
        data2 = data[1];
        data3 = data[2];
        data4 = data[3];
    }
    

    如果n为非正,则图案将被应用尽可能多的次数,并且阵列可以具有任意长度。

    推荐文章