jdk1.4的正则表达式可以用来替换字符串里的部分内容吗?

bjzhanghao 2003-08-08 06:13:59
有这样的串:
...
<!--Area1Begins name="name1"-->
some text
<!--Area1Ends-->
...

想把这些文本换替换成name1,怎么做最简单呢?注意字符串里可能有空格的,比如:
...
<!-- Area1Begins name="name1" -->
some text
<!-- Area1Ends -->
...

100分给真正的高手。
...全文
56 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjzhanghao 2003-08-11
  • 打赏
  • 举报
回复
谢谢你scbb,我要的基本就是这个功能。可惜那天急着走没看到,周末我自己写了一下,跟你的作用是一样的,分当然要给你啦:)

private String createThemeBlocks(String tmp, Article article) {
Pattern p = Pattern.compile("(<!--\\s*TemplateBeginEditable\\s+name=\"([^>]+)\"\\s*-->\\s*<!--\\s*TemplateEndEditable\\s*-->)");
Matcher m = p.matcher(tmp);
StringBuffer sb = new StringBuffer();
boolean result = m.find();
while (result) {
String columnName = m.group(2);
m.appendReplacement(sb, article.getContent());
result = m.find();
}
m.appendTail(sb);
return sb.toString();
}

scbb 2003-08-11
  • 打赏
  • 举报
回复
bjzhanghao (八进制) 你问的是这个意思吗?
scbb 2003-08-08
  • 打赏
  • 举报
回复
我刚看了一下正则。

随便写的。

大家不要笑我啊。

import java.util.regex.*;
import java.lang.*;

public class Test {

public static String getName(String group) {
Pattern p1 = Pattern.compile("<!--\\s*Area1Begins\\s*name\\s*=\\s*\"");
Pattern p2 = Pattern.compile("\"\\s*-->");

Matcher m1 = p1.matcher(group);
Matcher m2 = p2.matcher(group);
boolean b1 = m1.find();
int start = m1.end();
boolean b2 = m2.find();
int end = m2.start();
return group.substring(start, end);

}
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
String a = " aaa <!-- Area1Begins name=\"name1\" -->\r\nsome text\r\n<!-- Area1Ends -->";
Pattern p1 = Pattern.compile("<!--\\s*Area1Begins\\s*name\\s*=\\s*\".*\"\\s*-->");
Pattern p2 = Pattern.compile("<!--\\s*Area1Ends\\s*-->");
//Pattern p = Pattern.compile("<>");
Matcher m1 = p1.matcher(a);
Matcher m2 = p2.matcher(a);
System.out.println("Before Change");
System.out.println(a);
boolean b1 = m1.find();
String g1 = m1.group();
String name = getName(g1);
int lastend = m1.start();
String lastString = a.substring(0, lastend);
int start = m1.end();
boolean b2 = m2.find();
String g2 = m2.group();
int end = m2.start();
System.out.println();
System.out.println("after Change");
sb.append(lastString);
sb.append(g1);
sb.append("\r\n");
sb.append(name);
sb.append("\r\n");
sb.append(g2);
System.out.println(sb);
}
}
shingle 2003-08-08
  • 打赏
  • 举报
回复
百分百可以
scbb 2003-08-08
  • 打赏
  • 举报
回复
是some text这些文本换成name1?
scbb 2003-08-08
  • 打赏
  • 举报
回复
我想帮你, 不过没看懂,你要什么替换什么。:(
hyqryq 2003-08-08
  • 打赏
  • 举报
回复
没看出有什么难的, 为什么不自己写呢?

62,614

社区成员

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

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