java中由字符串创建二维字符数组

public class ArrayOperation {
    public static char[][] getCharArray(String str){
        if (str.charAt(0) != '[' || str.charAt(1) != '[' || str.charAt(str.length() - 1) != ']' || str.charAt(str.length() - 2) != ']') {
            System.out.println("Wrong Input Format!");
            return null;
        }
        String[] strs = str.split("],\\[");
        char[][] res = new char[strs.length][];
        for (int i = 0; i < res.length; i ++) {
            res[i] = strToCharArray(strs[i]);
        }
        return res;
    }

    private static char[] strToCharArray(String sourceStr) {
        if (sourceStr.length() == 3) {
            return new char[] {sourceStr.charAt(1)};
        }
        while (sourceStr.length() > 0 && sourceStr.charAt(0) == '[') {
            sourceStr = sourceStr.substring(1, sourceStr.length());
        }
        while (sourceStr.length() > 0 && sourceStr.charAt(sourceStr.length() - 1) == ']') {
            sourceStr = sourceStr.substring(0, sourceStr.length() - 1);
        }
        String[] strs = sourceStr.split(",");
        char[] res = new char[strs.length];
        for (int i = 0; i < strs.length; i ++) {
            res[i] = strs[i].charAt(1);
        }
        return res;
    }

    public static void main (String[] args){
        String str = "[[\"5\",\"3\",\".\",\".\",\"7\",\".\",\".\",\".\",\".\"],[\"6\",\".\",\".\",\"1\",\"9\",\"5\",\".\",\".\",\".\"],[\".\",\"9\",\"8\",\".\",\".\",\".\",\".\",\"6\",\".\"],[\"8\",\".\",\".\",\".\",\"6\",\".\",\".\",\".\",\"3\"],[\"4\",\".\",\".\",\"8\",\".\",\"3\",\".\",\".\",\"1\"],[\"7\",\".\",\".\",\".\",\"2\",\".\",\".\",\".\",\"6\"],[\".\",\"6\",\".\",\".\",\".\",\".\",\"2\",\"8\",\".\"],[\".\",\".\",\".\",\"4\",\"1\",\"9\",\".\",\".\",\"5\"],[\".\",\".\",\".\",\".\",\"8\",\".\",\".\",\"7\",\"9\"]]";
        System.out.println(str);
        print(ArrayOperation.getCharArray(str));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值