Java-将字符串中所有的/替换成//
将字符串中所有的/替换成//,如果字符串中是//或是多个//////则不替换,大家有没有什么好的方法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
将字符串中所有的/替换成//,如果字符串中是//或是多个//////则不替换,大家有没有什么好的方法?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
不过不用担心中间字符串会意外出现的问题:
将所有的"$"字符替换成"~$"字符串;
将所有的"//"字符串替换成~$$字符串,由于事先进行了替换1,1之后的字符串中不可能存在~$$字符串;如果你说的是"///"也必须要保持三条杠而不替换(应该不是你说的意思吧),可以用正则表达式的方式把"///"替换成~$$$,依此类推
将所有的"/"字符串替换成"//"字符串;
将"~$$"替换回"//"
将"~$"替换回"$"
虽然步骤复杂一点,但代码很简洁,而且不会出错。
这个问题 必须要有 正则表达式啊.
使用negative lookahead, negative lookbehind.
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
代码如下:
@Test
public void ttt(){
String testStr="abc/def//efvd///fsd/dfsd";
String expected="abc//def//efvd///fsd//dfsd";
assertEquals(expected, testStr.replaceAll("(?<!/)/(?!/)", "//"));
}
其实就是String.replaceAll("(?<!/)/(?!/)", "//"));
第一个办法:把字符串里的//全局替换成一个中间字符串,这个字符串要保证和原先的字符串不存在且不包含字符/。然后再把/替换成//,最后再把中间字符串替换来,如此可以实现;
第二个办法 老老实实写方法遍历字符:
只是个示范例子,需要调整和测试
public static String replaceSingleSlash(String str){
char[] arrayStr = str.toCharArray();
StringBuilder sb = new StringBuilder();
int length = str.length;
for (int i = 0; i < length-2; i++){
if(arrayStr[i]=='/'){
if(arrayStr[i+1]=='/'){
sb.append("//");
}else{
sb.append("//");
sb.append(arrayStr[i+1].toString());
}
++i;
}else{
sb.append(arrayStr[i].toString());
if(i+2 == length){
//处理最后一个字符
sb.append(arrayStr[i+1].toString());
}
}
}
return sb.toString();
}