Java:如何以格式{i,j},{i,j},{i,j}将文本文件转换为二维数组



我的文本文件如下:{11-11,22},{33-33,44},... {88-88,99}

如何以形式的Java中将其变成2维数组:[[11-11,22],[33-33,44],... [88-88,99]]

解决方案:

    String source = "{11-11,22},{33-33,44},{88-88,99}";
    String[] splittedSource = source.split("(?<=\}),(?=\{)");
    Pattern p = Pattern.compile("\{([^,]+),([^\}]+)");
    String[][] result = new String[splittedSource.length][2];
    for(int i = 0; i < splittedSource.length; i++) {
        Matcher m = p.matcher(splittedSource[i]);
        while(m.find()) {
            result[i][0] = m.group(1);
            result[i][1] = m.group(2);
            System.out.print(m.group(1) + " " + m.group(2) + "n");
        }
    }
    System.out.println(Arrays.deepToString(result));

说明:

source.split("(?<=\}),(?=\{)");-' ,'字符上的拆分源之前为' }',然后是' {''

Pattern.compile("\{([^,]+),([^\}]+)");-两个捕获组在括号" ()"中,首先包含除' ,'以外的所有字符,直到达到' ,',sent ,'之后的所有字符都包含' CC_9'之后的所有字符

new String[splittedSource.length][2];-在此示例中是 [3][2]

Matcher m = p.matcher(splittedSource[i]);-在这里您说您将检查splittedSource[]

的每个元素的给定模式

输出您从此代码中获得:

11-11 22
33-33 44
88-88 99
[[11-11, 22], [33-33, 44], [88-88, 99]]
public static void main(String[] args) {
    Scanner in = new Scanner(Thread.currentThread().getContextClassLoader().
    getResourceAsStream("input/test.txt"));
    String line = in.nextLine();
    String[] tokens = line.split("},");
    String[][] finalArray = new String[tokens.length][2];
    for (int i = 0; i < tokens.length; i++) {
        tokens[i] = tokens[i].replace("{", "");
        tokens[i] = tokens[i].replace("}", "");
        finalArray[i] = tokens[i].split(",");
    }
    for (int i = 0; i < finalArray.length; i++) {
        System.out.println(Arrays.toString(finalArray[i]));
    }
}

最新更新