【问题标题】:Edit string array and convert it to 2D char array编辑字符串数组并将其转换为二维字符数组
【发布时间】:2021-12-19 18:29:21
【问题描述】:

我从一个格式化为useful.useless 的字符串数组开始。我需要修剪掉.useless 部分,然后将useful 部分放入二维char 数组中。

我看到了一种方法,它涉及创建仅包含 useful 部分的第二个字符串数组,然后将其转换为 2D 字符数组,但可能有更有效的方法。

但是,我不知道如何将字符串数组转换为二维字符数组

public static void main (String[]args){
    
    // this here is just to create an array so the example runs
    String in = "useful1.useless1,useful2.useless2,useful3.useless3,";
    String[] strArray = null; 
    strArray = in.split(",");
    
    /*the array of strings is thus
    [useful1.useless1, useful2.useless2, useful3.useless3]
    */
    
    char [][] charArray = new char [strArray.length][];
    
    /* trim from the . so only useful part remains
    then put in 2d char array, which should look like
    
    [u,s,e,f,u,l,1]
    [u,s,e,f,u,l,2]
    [u,s,e,f,u,l,3]
    
    the array will be a ragged array
    */

}

【问题讨论】:

标签: java arrays


【解决方案1】:

您需要在每个索引处填充charArray,并在相应索引处使用strArray 的所需子字符串的字符数组。如下图所示:

for (int i = 0; i < strArray.length; i++)
    charArray[i] = strArray[i].substring(0, strArray[i].indexOf('.')).toCharArray();

演示:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // this here is just to create an array so the example runs
        String in = "useful1.useless1,useful2.useless2,useful3.useless3,";
        String[] strArray = in.split(",");

        /*
         * the array of strings is thus [useful1.useless1, useful2.useless2,
         * useful3.useless3]
         */

        char[][] charArray = new char[strArray.length][];
        for (int i = 0; i < strArray.length; i++)
            charArray[i] = strArray[i].substring(0, strArray[i].indexOf('.')).toCharArray();

        // Display
        for (char[] row : charArray)
            System.out.println(Arrays.toString(row));
    }
}

输出:

[u, s, e, f, u, l, 1]
[u, s, e, f, u, l, 2]
[u, s, e, f, u, l, 3]

【讨论】:

    【解决方案2】:

    串流:

    • 使用正则表达式“删除”无用的部分
    • 将“有用的”String 转换为char[]
    • 将所有char[] 收集到char[][]

    瞧:

    char[][] usefulChars = Arrays.stream(strArray)
      .map(s -> s.replaceAll("\\..*", ""))
      .map(String::toCharArray)
      .toArray(char[][]::new);
    

    live demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 2021-01-28
      相关资源
      最近更新 更多