Java 用空格替换奇数逗号字符
如何使用replace函数将奇数位置出现的逗号替换为空格?所以我想把逗号替换为1,3,7,9…作为空格 字符串文本=[[13,68],[134681],[13,6],[17,68],[13,68],[13,681],[135,68],[136,68],[13,68]] 谢谢你抽出时间 输出字符串应该如下所示:我可以使用replace函数两次替换“[”和“]”,但我不明白如何使用“Java”删除逗号的奇数 使用Regex更新1:以下数据具有sql server几何数据类型的X和Y坐标 text=[[148607.1815677256818657.60249623],[147539.268528918617188.04749019],[144563.5263993566817136.65513745],[144921.1542095646818629.77966401],[146841.517476705619929.72166114],[148012.4829150566819763.28604383],[148607.18156772518657.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]] 用空格替换奇数位置出现的逗号 听起来您真正需要的是替换括号之间的逗号。如果是这样,那么使用正则表达式查找这些字符如何Java 用空格替换奇数逗号字符,java,string,Java,String,如何使用replace函数将奇数位置出现的逗号替换为空格?所以我想把逗号替换为1,3,7,9…作为空格 字符串文本=[[13,68],[134681],[13,6],[17,68],[13,68],[13,681],[135,68],[136,68],[13,68]] 谢谢你抽出时间 输出字符串应该如下所示:我可以使用replace函数两次替换“[”和“]”,但我不明白如何使用“Java”删除逗号的奇数 使用Regex更新1:以下数据具有sql server几何数据类型的X和Y坐标 text=[
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]]]
用空格替换奇数位置出现的逗号
听起来您真正需要的是替换括号之间的逗号。如果是这样,那么使用正则表达式查找这些字符如何
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]]]
您可以使用此正则表达式并使用
$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
更新:对于无符号十进制数,可以使用
演示
const regex=/\[*(\d*\?\d+)\d*,\d*(\d*\?\d+)\]*/g;
常量str=`[[13,68],[134**,**681],[13**,**6],[17,68],[13,68],[13,681],[135,68],[136,68],[13,68]]`;
常量str2=`[[148607.1815677256818657.60249623],[147539.268528918617188.04749019],[144563.5263993566817136.65513745],[144921.154209566818629.77966401],[146841.517476705619929.72166114],[148012.4829150566819763.28604383],[148607.1815677256818657.60249623];
const subst=`1$2`;
const result=str.replace(regex,subst);
const result2=str2.replace(regex,subst);
控制台日志(结果);
console.log(result2)代码>您可以使用此正则表达式并使用$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
更新:对于无符号十进制数,可以使用
演示
const regex=/\[*(\d*\?\d+)\d*,\d*(\d*\?\d+)\]*/g;
常量str=`[[13,68],[134**,**681],[13**,**6],[17,68],[13,68],[13,681],[135,68],[136,68],[13,68]]`;
常量str2=`[[148607.1815677256818657.60249623],[147539.268528918617188.04749019],[144563.5263993566817136.65513745],[144921.154209566818629.77966401],[146841.517476705619929.72166114],[148012.4829150566819763.28604383],[148607.1815677256818657.60249623];
const subst=`1$2`;
const result=str.replace(regex,subst);
const result2=str2.replace(regex,subst);
控制台日志(结果);
console.log(result2)代码>到目前为止您都做了些什么?您可以用某物替换“],然后替换其余的逗号,然后替换回“],或者使用正则表达式替换逗号,但不替换“],或者拆分字符串以分离[任何]块并用不同的分隔符重新生成。现在还不清楚结果应该是什么样的inputshow?@Maverick我试过使用replace函数。我最初的要求是删除“[”和“]”,这也是我使用stringreplace函数设法做到的。我会更新我的帖子further@YCF_L:我已经更新了关于输出应该是什么样子的帖子。到目前为止,您做了什么?您能用某物替换“],然后替换其余的逗号,然后替换回“],或者使用正则表达式替换逗号,但不替换“],或者拆分字符串以分隔[任何内容]使用不同的分隔符进行块和重建。现在还不清楚结果应该是什么样的inputshow?@Maverick我试过使用replace函数。我最初的要求是删除“[”和“]”,这也是我使用stringreplace函数设法做到的。我会更新我的帖子further@YCF_L:我已经更新了关于输出的内容。例如,我想用空格替换13和68之间的逗号,并在更新的问题13 68、134 681、13 6、17 68、13 68、13 681、135 68、136 68、13中查看输出68@user3384231哎呀,我换错了逗号。我会编辑答案。没问题……我也试过你的正则表达式,但它给了我“美元后的非法字符串体字符”