栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

正则表达式拆分嵌套的坐标字符串

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

正则表达式拆分嵌套的坐标字符串

您可以

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,你能做得更好吗?



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/508861.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号