我的文本文件如下:{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]));
}
}