我有一个有坐标的字符串。
- 各个坐标由空格分隔。
- 顶点(XYZ 坐标)用逗号分隔。
- 顶点组用括号括起来并用逗号分隔。
Before: MULTILINESTRING M (( 0.0 5.0 123, 10.0 10.0 456, 30.0 0.0 789),( 50.0 10.0 -123, 60.0 10.0 -100000.0))
我想用一个新数字替换每个顶点中的第三个坐标:
After: MULTILINESTRING M (( 0.0 5.0 1, 10.0 10.0 1, 30.0 0.0 1),( 50.0 10.0 1, 60.0 10.0 1))
为简单起见,我们可以使用该号码1
作为替换号码。
替换该字符串中的这些数字的好方法是什么?
如果顶点和顶点组的结构是统一的,并且目标确实是用相同的数字文字替换所有第三个坐标,则可以使用普通的
regexp_replace
.假设这些数字都使用十进制字符,下面是您提供的文本示例:
结果:
MULTILINESTRING M (( 0.0 5.0 1, 10.0 10.0 1, 30.0 0.0 1),( 50.0 10.0 1, 60.0 10.0 1))
以上将匹配任何前面有空格和逗号或右括号的普通十进制数,并将其替换为
1
.如果替换需要从捕获的坐标派生,则可能值得考虑在重建字符串之前提取坐标并对其进行操作,具体取决于派生的性质。