请教java replaceAll

fbfan520 2010-03-18 10:20:46
我现有的情况是有一段字符如:str=woshizhongguoren$china.gif$tupianlai$beijin.gif$zailaiyizhang$chengdu.gif$xingma
我需要把str替换成如:
str=woshizhongguoren<img src='china.gif'/>tupianlai<img src='beijin.gif'/>zailaiyizhang<img src='chengdu.gif'/>xingma
请问怎么用正则表达式或其它简单的方式得到?谢谢
...全文
274 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lemon520 2010-03-19
  • 打赏
  • 举报
回复
只能BS楼主了
ychzxx 2010-03-19
  • 打赏
  • 举报
回复
我感觉4楼的方法很好,简单明了,这个分应该给4楼才对。
BS不至于,我这里要谢谢你,又学到了东西。
ychzxx 2010-03-18
  • 打赏
  • 举报
回复
4楼的方法我测试了,满足需求。
模仿4楼的写法我也写了一个,以前没有这么用过组,学习了。
public static void main(String[] args) throws Exception {
String txt = "woshizhongguoren$china.gif$tupianlai$beijin.gif$zailaiyizhang$chengdu.gif$xingma";
Pattern p = Pattern.compile("\\$[^$]*?\\.gif\\$");
Matcher m = p.matcher(txt);
String newstring = m.replaceAll("<img src=\'$0\'/>");
System.out.println(newstring);
}
lemon520 2010-03-18
  • 打赏
  • 举报
回复
String txt = "woshizhongguoren$china.gif$tupianlai$beijin.gif$zailaiyizhang$chengdu.gif$xingma";

System.out.println(txt.replaceAll("\\$(\\w*\\.gif)\\$", "<img src=\'$1\'/>"));

随手写的,没测
pwl2014 2010-03-18
  • 打赏
  • 举报
回复

String str = "woshizhongguoren$china.gif$tupianlai$beijin.gif$zailaiyizhang$chengdu.gif$xingma";
Pattern p = Pattern.compile("\\$.{0,}?\\.gif\\$");
Matcher m = p.matcher(str);
StringBuffer sb = new StringBuffer();
int start = 0;
int end = 0;
while(m.find()){
String gifStr = m.group();
gifStr = "<img src='" + gifStr.substring(1, gifStr.length() - 1)+ "'/>";
if(start == 0){
start = m.start();
end = m.end();
sb.append(str.substring(0, start));
} else {
start = m.start();
sb.append(str.substring(end, start));
end = m.end();
}
sb.append(gifStr);
}
sb.append(str.substring(end, str.length()));

System.out.println(sb.toString());
zoumin19870910 2010-03-18
  • 打赏
  • 举报
回复

String str = "woshizhongguoren$china.gif$tupianlai$beijin.gif$zailaiyizhang$chengdu.gif$xingma";
String flag = "";
String result = "";
int j = 0;
for(int i=0; i<str.length(); i++){
flag = String.valueOf(str.charAt(i));
if("$".equals(flag)){
j+=1;
if(j%2!=0){
result+="<img src='";
}else{
result+="'/>";
}
}else{
result+=flag;
}
}
System.out.println(result);


我试过了,打印出来的结果如下:
woshizhongguoren<img src='china.gif'/>tupianlai<img src='beijin.gif'/>zailaiyizhang<img src='chengdu.gif'/>xingma
验证码识别 2010-03-18
  • 打赏
  • 举报
回复
用正则,先分解开,
woshizhongguoren
china.gif
...

再添加组合
heroshen1988 2010-03-18
  • 打赏
  • 举报
回复
学习一下!!
hejl716 2010-03-18
  • 打赏
  • 举报
回复
4楼的没问题,不过楼上的还有点问题。
Pattern p = Pattern.compile("\\$(.*?\\.gif)\\$");
Matcher m = p.matcher(txt);
String newstring = m.replaceAll("<img src=\'$1\'/>");

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧