【发布时间】:2020-05-17 17:05:14
【问题描述】:
我是 Regex 和 Java 字符串格式化的新手,我想格式化这个字符串:
String text = "[(0 : 1 : 0), (2 : 11 : 1), (2 : 12 : 1)]";
数字是点坐标 x,y,z,我希望能够将括号内的值分配给对象 - 所以我需要隔离它们,然后只获取数字值。谁能帮助我用什么正则表达式可以帮助我实现这一目标?我列出了我的问题的一些规范。
- 文本值中的点数会有很大差异 - 可以是 0 到 n。
- 我希望能够遍历字符串以正确分配每个坐标 (x,y,z),因此我需要括号 () 来指示点的结束和开始,以及:指示坐标的结束和开始。
我正在寻找一种可以帮助我实现这一目标的模式 - 我查找了诸如格式、模式等之类的类以及诸如 replaceAll 之类的方法,但我真的坚持使用哪种模式能够以某种方式进行迭代它正确识别坐标 - 您可以看到坐标可以是两位数,因此它必须采用 : 之后的所有数字。
【问题讨论】:
-
您想要一个正则表达式的任何特殊原因?
-
是
:0在第一个元组之间没有空格,还是冒号前后总是有空格? -
还不错。您需要一个匹配
(0 : 1 :0)的正则表达式,其中每个数字是 1 到 8 位数字(带有可选的减号?)。你需要为数字捕获组——使用圆括号。然后你需要重复调用Matcher.find()来匹配每个元组。对于找到的每个元组,取出捕获的组并使用Integer.parseInt()将它们解析为int。 -
@Ole V.V. - 很抱歉这是一个错字 - 前后总是有空格:njzk2 - 我只是认为它会为我完成这项工作 - 如果没有正则表达式,你有更好的解决方案吗?
标签: java regex string loops formatting