有这样的串:
...
<!--Area1Begins name="name1"-->
some text
<!--Area1Ends-->
...
想把这些文本换替换成name1,怎么做最简单呢?注意字符串里可能有空格的,比如:
...
<!-- Area1Begins name="name1" -->
some text
<!-- Area1Ends -->
...
100分给真正的高手。
我刚看了一下正则。
随便写的。
大家不要笑我啊。
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);
}
}