将string []转换为字符串然后拆分为数组

时间:2017-11-16 13:38:22

标签: java arrays string list split

我需要帮助创建一个分割字符串的循环。到目前为止,我有以下代码。

    System.out.println("*FILE HAS BEEN LOCATED*");
    System.out.println("*File contains: \n");
    List<String> lines = new ArrayList<String>();
    while (scan.hasNextLine()) 
    {
      lines.add(scan.nextLine());
    }

    String[] arr = lines.toArray(new String[0]);

    String str_array = Arrays.toString(arr);

    String[] arraysplit;
    arraysplit = str_array.split(":");

    for (int i=0; i<arraysplit.length; i++)
    {
        arraysplit[i] = arr[i].trim();
        System.out.println(arr[i]);
    }

其中一个字符串的示例是

        Firstname : Lastname : age 

我希望它将字符串拆分为另一个看起来像这样的数组:

        Firstname
        Lastname
        age

我在运行代码时仍然遇到错误,似乎当我将数组转换为字符串时,它会将逗号放入字符串中,因此当我尝试拆分字符串时会导致问题:不,

图像: IMAGE, I've circled where the commas are within the converted array string

2 个答案:

答案 0 :(得分:5)

问题:您正在使用旧数组arr来显示值,而arraysplit将得到split方法的结果值,因此您需要应用{{ 1}}在trim()的元素上,并将元素分配回相同的索引

arraysplit

简化解决方案(列表到数组和数组到字符串复杂化)

1。)创建长度为String[] arraysplit; arraysplit = str_array.split(":"); for (int i=0; i<arraysplit.length; i++) { arraysplit[i] = arraysplit[i].trim(); // ^^^^^^^^^^^^ has values with spaces System.out.println(arr[i]); } System.out.println(arraysplit[i]);

的数组

2。)sizeOfList * 3使用split

的列表元素

3.使用带有\\s*:\\s*的数组副本作为结果数组的索引来保持数组索引的跟踪

j

您可以使用regex String result[] = new String [lines.size()*3]; int j=0; for (int i=0; i<lines.size(); i++) { System.arraycopy(lines.get(0).split("\\s*:\\s*"), 0, result, j, 3); j+=3; } System.out.println(Arrays.toString(result)); 其中

str_array.split("\\s*:\\s*");\\s*:\\s*表示零个或多个空格,然后是\\s*个字符,然后是零个或多个空格

:

答案 1 :(得分:2)

使用此正则表达式\s*:\s*

进行拆分
String[] arraysplit = str_array.split("\\s*:\\s*");

详细信息:

  • \s*零个或多个空格
  • 后跟横向字符:
  • 后跟\s*零个或多个空格

regex demo