我正在尝试创建一个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]
我将每一行加载到一个字符串[15]中,以便每个支架与其余部分隔离
我正在创建一个游戏,它是一个2D RPG(原来对吗?),上面的数字是关键整数,告诉我们在哪里放置一个平铺图像,以及哪个平铺图像用于 “mapTile BufferedImage []”
括号内的每个数字代表X轴上的1个单位,
每个括号集合在Y轴上组成1个单位。
我的网格尺寸为24x15
我的问题是我试图抓取数字,并将它们放入int [24] [15],但正如你所知,它可以在字符串长度上有所不同。可以在逗号之间使用的“数字”数量最多是“4”,因为我没有超过9999个mapTiles lol
如何创建提取该信息的正则表达式?
答案 0 :(得分:3)
您的数据集太简单,无法使用正则表达式。您可以通过,
逗号轻松分割线条来解析坐标。此外,如果您希望将坐标存储为int[15][24]
,则可能需要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