1

我正在尝试制作一个 mapLoader,它读取文件的文本文件(这里是一个示例)

[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[5,3,3,900,3,89,3,3,3,3,3,430,3,1439,3,65,3,320,3,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]
[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,21,3,3,3,3,3]

我将每一行加载到 String[15] 中,因此每个 Bracket 都与其余部分隔离

我正在创建一个游戏,它是一个 2D 角色扮演游戏(如此原始,对吗?),上面的数字是关键整数,它们告诉在哪里放置一个平铺图像,以及在“mapTile BufferedImage []”中使用什么平铺图像

括号内的每个数字代表 X 轴上的 1 个单位,

每个括号集合构成 Y 轴上的 1 个单位。

我的网格大小是 24x15

我的问题是我试图获取这些数字,并将它们放入一个 int[24][15] 中,但正如您所知,它的字符串长度可能会有所不同。逗号之间可以使用的“数字”最多是“4”,因为我没有超过 9999 个 mapTiles 哈哈

如何创建提取该信息的正则表达式?

4

1 回答 1

3

您的数据集过于简单,无法使用正则表达式。您可以通过逗号轻松拆分行,以解析您的坐标。此外,您可能需要一个int[15][24]here 而不是int[24][15]如果您想存储坐标,int[rows][cols]因为您的网格是24x15.

int[][] coords = new int[15][24];
BufferedReader br = new BufferedReader(new FileReader("/path/to/file"));

int row = 0;
String line = null;
while ((line = br.readLine()) != null) {
    // remove "[ ]" then split by ","
    String[] x = line.substring(1, line.length() - 1).split(",");
    // parse first 24 values only
    int cols = Math.min(x.length, 24);
    for (int col = 0; col < cols; col++) {
        coords[row][col] = Integer.parseInt(x[col]);
    }
    if (++row >= 15) break; // parse first 15 lines only
}

for (int i = 0; i < coords.length; i++) {
    for (int j = 0; j < coords[i].length; j++) {
        System.out.print(coords[i][j]);
    }
    System.out.println();
}

输出

53390038933333430314393653320333333
3333333333333333332133333
53390038933333430314393653320333333
3333333333333333332133333
53390038933333430314393653320333333
3333333333333333332133333
53390038933333430314393653320333333
3333333333333333332133333
53390038933333430314393653320333333
3333333333333333332133333
53390038933333430314393653320333333
3333333333333333332133333
53390038933333430314393653320333333
3333333333333333332133333
3333333333333333332133333
于 2013-09-10T04:44:02.720 回答