Java 如何替换子字符串的每个标记
因此,我的代码输出Java 如何替换子字符串的每个标记,java,regex,replace,Java,Regex,Replace,因此,我的代码输出Elep\u nt,但我希望它用下划线替换该子字符串的每个单独标记,以便它将输出Elep\u nt 在一行中是否有这样做的方法?我必须使用循环吗?您可以使用StringBuilder: String s = "Elephant"; String srep = (s.replaceAll(s.substring(4,6), "_" )); System.out.println(srep); StringBuilder结果=新的StringBuilder(s.length())
Elep\u nt
,但我希望它用下划线替换该子字符串的每个单独标记,以便它将输出Elep\u nt
在一行中是否有这样做的方法?我必须使用循环吗?您可以使用
StringBuilder
:
String s = "Elephant";
String srep = (s.replaceAll(s.substring(4,6), "_" ));
System.out.println(srep);
StringBuilder结果=新的StringBuilder(s.length());
追加(s.substring(0,4));
对于(int i=4;i<6;i++)
结果。追加(“”);
结果:追加(s.substring(6));
字符串srep=result.toString();
系统输出打印LN(srep);
电气设备
您可以使用
StringBuilder
:
String s = "Elephant";
String srep = (s.replaceAll(s.substring(4,6), "_" ));
System.out.println(srep);
StringBuilder结果=新的StringBuilder(s.length());
追加(s.substring(0,4));
对于(int i=4;i<6;i++)
结果。追加(“”);
结果:追加(s.substring(6));
字符串srep=result.toString();
系统输出打印LN(srep);
电气设备
int差=6-4;
StringBuilder sb=新的StringBuilder();
对于(整数计数=0;计数<代码>整数差=6-4;
StringBuilder sb=新的StringBuilder();
对于(int count=0;count而言,您的问题在于您同时匹配了“ha”
,因此它只被一个字符替换。(请注意,如果您有“Elephantha”
,最后一个“ha”
也将被替换。)
您可以使用a来确定要替换的每个字符。因此,要将字符从位置4替换为位置5,您可以使用:
int difference = 6-4;
StringBuilder sb = new StringBuilder();
for(int count=0; count<difference; count++){
sb.append("_");
}
String s = "Elephant";
String srep = (s.replaceAll(s.substring(4,6), sbsb.toString() ));
您的问题是,您同时匹配了“ha”
,因此它只被一个字符替换。(请注意,如果您有“Elephantha”
,最后一个“ha”
也会被替换。)
您可以使用a来确定要替换的每个字符。因此,要将字符从位置4替换为位置5,您可以使用:
int difference = 6-4;
StringBuilder sb = new StringBuilder();
for(int count=0; count<difference; count++){
sb.append("_");
}
String s = "Elephant";
String srep = (s.replaceAll(s.substring(4,6), sbsb.toString() ));
既然你要的是oneliner,这里是另一种可能的方式
Elep__nt
或使用StringBuilder
String srep = s.substring(0,4)+s.substring(4,6).replaceAll(".", "_")+s.substring(6);
输出
String srep = new StringBuilder(s).replace(4, 6, s.substring(4,6).replaceAll(".", "_")).toString();
但请注意,内部regexreplaceAll
无论如何都使用循环,因为您在这里要求使用oneliner是另一种可能的方法
Elep__nt
或使用StringBuilder
String srep = s.substring(0,4)+s.substring(4,6).replaceAll(".", "_")+s.substring(6);
输出
String srep = new StringBuilder(s).replace(4, 6, s.substring(4,6).replaceAll(".", "_")).toString();
但是请注意,在内部regexreplaceAll
无论如何都使用循环您认为在一行中执行该操作会有什么好处?您认为在一行中执行该操作会有什么好处?