字符串替换问题 原"a|b||c|d|||||||e||" 变成"a||b||c||d||e"也就是 将所有的字母间的"|"都变成"||" 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 a||b||c||d||e||最后的||也不要? s.replaceAll("(?<=[a-zA-Z])\\|+(?=[a-zA-Z])","||") 不用正则 你就只能用循环加 String.charAt()-.- 可以用一个stringbuffer,charAt,遇到非|简单插入,遇到|插入||就行了。 是不是得到一个String(例如:"a|b||c|d|||||||e||"),然后不管两个字母之间有多少个"|",都保持字母间只有两个"|"。而且,最后是不是一定要正正好好两个"|"这样的话,不如换种思路,把字母取出来,然后在中间插两个"|"。 支持littlefish的想法,很简单的思路,遇到char,就插入这个char和||,遇到其他的就直接过去: String string="a|b||c|d|||||||e||"; char[] chars=string.toCharArray(); StringBuilder sBuilder=new StringBuilder(); for(char c:chars){ if(Character.isLetter(c)){ sBuilder.append(c); sBuilder.append("||"); } } String result=sBuilder.toString(); treeroot的方法也不错:s.replaceAll("(?<=[a-zA-Z])\\|+(?=[a-zA-Z])","||")但是好像规则表达式不用那么复杂吧:s.replaceAll("\\|+","||")这样不就行了吗? (?<=X) X,通过零宽度的正 lookbehind (?=X) X,通过零宽度的正 lookahead 这两句啥意思~ API文档里写的不清不楚。 debug时的小问题 写文件时,日语出现乱码时怎么回事? vector练习题 私有成员变量怎么把他引入子类的方法中 struts2.0+Spring2.5.5+Hibernate开发博客? 总是报错说"无法从静态上下文中引用非静态变量this" 关于try-catch的一个问题 ·#¥东北大学东软信息技术学院怎么样,是什么性质的学校,请了解的朋友介绍一下! 什么是造型 急!~ 写文件时,换行怎么做? 一个很郁闷的Java问题,高手帮帮我!!!! 数据库就是死活连接不上...郁闷呀!!!!!!在线等呀.
这样的话,不如换种思路,把字母取出来,然后在中间插两个"|"。
String string="a|b||c|d|||||||e||";
char[] chars=string.toCharArray();
StringBuilder sBuilder=new StringBuilder();
for(char c:chars){
if(Character.isLetter(c)){
sBuilder.append(c);
sBuilder.append("||");
}
}
String result=sBuilder.toString();
但是好像规则表达式不用那么复杂吧:
s.replaceAll("\\|+","||")
这样不就行了吗?
(?=X) X,通过零宽度的正 lookahead
这两句啥意思~ API文档里写的不清不楚。