您可以
String#split()为此使用。
String string = "[(1, 2), (2, 3), (3, 4)]";string = string.substring(1, string.length() - 1); // Get rid of braces.String[] parts = string.split("(?<=\))(,\s*)(?=\()");for (String part : parts) { part = part.substring(1, part.length() - 1); // Get rid of parentheses. String[] coords = part.split(",\s*"); int x = Integer.parseInt(coords[0]); int y = Integer.parseInt(coords[1]); System.out.printf("x=%d, y=%dn", x, y);}在
(?<=\))正回顾后发意味着它必须在前面加
)。在
(?=\()
正向前查找意味着它必须由suceeded
(。该
(,\s*)意味着它必须在劈裂
,后的任何空间。在
\这里只是为了逃避正则表达式特定的字符。
也就是说,特定的String可识别为的结果
List#toString()。您确定自己的做法正确吗?;)
*根据评论进行 *更新 ,您实际上也可以进行相反的处理并消除非数字:
String string = "[(1, 2), (2, 3), (3, 4)]";String[] parts = string.split("\D.");for (int i = 1; i < parts.length; i += 3) { int x = Integer.parseInt(parts[i]); int y = Integer.parseInt(parts[i + 1]); System.out.printf("x=%d, y=%dn", x, y);}此处
\D意味着必须将其拆分为任何
非
\d数字(代表数字)。该
.装置之后,它应该消除数字后的任何空白匹配。但是,我必须承认我不确定如何消除数字 前
的空白匹配。我不是训练有素的正则表达式专家。 嘿,巴特·K,你能做得更好吗?



