如何使用替换函数将奇数位置的逗号替换为空格?所以我想将1,3,7,9的逗号替换成空格......
字符串文字= [[[[13,68],[134,681],[13,6],[17,68],[13,68],[13,681],[135,68],[136] ,68],[13,68]]]
感谢您的时间。
输出字符串应如下所示:我可以使用替换功能两次来替换" ["和"]"但我不明白如何使用" Java"
删除奇数个逗号13 68, 134 681,13 6, 17 68, 13 68, 13 681, 135 68, 136 68, 13 68
使用Regex Update1 :以下数据具有sql server的几何数据类型的X和Y坐标。
文本= [[[148607.181567725,6818657.60249623],[147539.268528918,6817188.04749019],[144563.526399356,6817136.65513745],[144921.154209564,6818629.77966401],[146841.517476705,6819929.72166114],[148012.482915056,6819763.28604383],[148607.181567725,6818657.60249623]]]
输出:[[[148607.181567725 6818657.60249623 147539.268528918 6817188.04749019 144563.526399356 6817136.65513745 144921.154209564 6818629.77966401 146841.517476705 6819929.72166114 148012.482915056 6819763.28604383 148607.181567725 6818657.60249623]]]
答案 0 :(得分:3)
您可以使用此正则表达式并使用$1 $2
替换捕获的数字
\\[*(\\d+)\\W*,\\W*(\\d+)\\]*
\\[*
:[
(\\d+)
:捕获一个或多个后来用作替换$1
\\W*,
:零个或多个非单词字符和,
(\\d+)
:第二个捕获组,替换为$2
\\]*
:]
String s = "[[[13, 68], [134**,** 681], [13**,** 6], [17, 68], [13, 68], [13, 681], [135, 68], [136, 68], [13, 68]]]";
String pattern = "\\[*(\\d+)\\W*,\\W*(\\d+)\\]*";
System.out.println(s.replaceAll(pattern, "$1 $2"));
输出:
13 68, 134 681, 13 6, 17 68, 13 68, 13 681, 135 68, 136 68, 13 68
更新:对于无符号十进制数,您可以使用
\\[*(\\d*\\.?\\d+)\\D*,\\D*(\\d*\\.?\\d+)\\]*
演示
const regex = /\[*(\d*\.?\d+)\D*,\D*(\d*\.?\d+)\]*/g;
const str = `[[[13, 68], [134**,** 681], [13**,** 6], [17, 68], [13, 68], [13, 681], [135, 68], [136, 68], [13, 68]]]`;
const str2 = `[[[148607.181567725, 6818657.60249623], [147539.268528918, 6817188.04749019], [144563.526399356, 6817136.65513745], [144921.154209564, 6818629.77966401], [146841.517476705, 6819929.72166114], [148012.482915056, 6819763.28604383], [148607.181567725, 6818657.60249623]]]`;
const subst = `$1 $2`;
const result = str.replace(regex, subst);
const result2 = str2.replace(regex, subst);
console.log(result);
console.log(result2);

注意:对于签名值
喜欢[[[-148607.181567725, -6818657.60249623], [-147539.268528918, -6817188.04749019],
答案 1 :(得分:0)
将奇数位置的逗号替换为空格
听起来你真正需要的是替换括号之间的逗号。如果是这样,那么如何使用正则表达式来查找这些字符?
String s = "[[13, 68], [134**,** 681], [13**,** 6], [17, 68], [13, 68], [13, 681], [135, 68], [136, 68], [13, 68]]]";
System.out.println(s.replaceAll("\\][ ,]+\\[", "] ["));
输出:
[[13, 68] [134**,** 681] [13**,** 6] [17, 68] [13, 68] [13, 681] [135, 68] [136, 68] [13, 68]]]
编辑:
我删除了错误的逗号,这是更新版本:
String s = "[[13, 68], [134**,** 681], [13**,** 6], [17, 68], [13, 68], [13, 681], [135, 68], [136, 68], [13, 68]]]";
System.out.println(s.replaceAll("\\[([^,]+)[ ,]+([^,]+)\\]", "[$1 $2]"));
输出:
[[13 68], [134** ** 681], [13** ** 6], [17 68], [13 68], [13 681], [135 68], [136 68], [13 68]]]