Java-将字符串中所有的/替换成//

发布于 2017-02-03 10:52:28 字数 58 浏览 1777 评论 3

将字符串中所有的/替换成//,如果字符串中是//或是多个//////则不替换,大家有没有什么好的方法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

泛泛之交 2017-07-01 15:56:41

不过不用担心中间字符串会意外出现的问题:

将所有的"$"字符替换成"~$"字符串;
将所有的"//"字符串替换成~$$字符串,由于事先进行了替换1,1之后的字符串中不可能存在~$$字符串;如果你说的是"///"也必须要保持三条杠而不替换(应该不是你说的意思吧),可以用正则表达式的方式把"///"替换成~$$$,依此类推
将所有的"/"字符串替换成"//"字符串;
将"~$$"替换回"//"
将"~$"替换回"$"

虽然步骤复杂一点,但代码很简洁,而且不会出错。

晚风撩人 2017-06-11 08:27:08

这个问题 必须要有 正则表达式啊.

使用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("(?<!/)/(?!/)", "//"));

晚风撩人 2017-04-12 13:07:05

第一个办法:把字符串里的//全局替换成一个中间字符串,这个字符串要保证和原先的字符串不存在且不包含字符/。然后再把/替换成//,最后再把中间字符串替换来,如此可以实现;
第二个办法 老老实实写方法遍历字符:
只是个示范例子,需要调整和测试

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();
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文