簡體   English   中英

編輯字符串數組並將其轉換為二維字符數組

[英]Edit string array and convert it to 2D char array

我從一個格式化為useful.useless的字符串數組開始。 我需要修剪掉.useless部分,然后將useful部分放入 2D char數組中。

我看到了一種方法,涉及創建僅包含useful部分的第二個字符串數組,然后將其轉換為二維字符數組,但可能有更有效的方法。

但是,我不知道如何將字符串數組轉換為二維字符數組

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
    */

}

您需要在每個索引處填充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]

流式傳輸字符串:

  • 使用正則表達式“刪除”無用部分
  • 將“有用的” String轉換為char[]
  • 將所有char[]收集到一個char[][]

瞧:

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

現場演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM