我的程序里要替换些不确定的东西
比如:<div id=yschres> <div id=yschcont style="margin-left:0px;"> <div id=yschpri style="margin-left:5px;"> <div id=yschrel>
有这么多的DIV 我需要在id的属性上加上""双引号 变成 如:<div id="yschres"> <div id="yschcont" style="margin-left:0px;"> 我应该如何替换呢!!
谢谢各位高手了
比如:<div id=yschres> <div id=yschcont style="margin-left:0px;"> <div id=yschpri style="margin-left:5px;"> <div id=yschrel>
有这么多的DIV 我需要在id的属性上加上""双引号 变成 如:<div id="yschres"> <div id="yschcont" style="margin-left:0px;"> 我应该如何替换呢!!
谢谢各位高手了
应该用replaceAll这个方法吧 我到是找到个规律 都是以<div id=开始的 在找到id后面的第一个空格 就可以了替换了 但是正责 我确实不熟悉 麻烦楼上的朋友了 先谢谢了
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class divid
{ public static void main(String[] args)
{
String a = "";
int flag = 0;
String s = "<div id=yschres> <div id=yschcont " +
"style=\"margin-left:0px;\">" +
"<div id = wang>";
Pattern pattern = Pattern.compile("<div id\\s*=\\s*?([a-zA-Z0-9]+)");
Matcher m = pattern.matcher(s);
while (m.find())
{
if (flag == 0)
{
a = s.replaceAll(m.group(1), "\"" + m.group(1) + "\"");
++flag;
}
else
{
a = a.replaceAll(m.group(1), "\"" + m.group(1) + "\"");
}
}
System.out.println(a); }}
谢谢了 由于比较着急 我还没来的及分析你写的了 因为没怎么用过正责 谢谢了
我把id换成class又可以啊
import java.util.regex.Pattern;public class UtilRegex {
static String reg_div = "<div .*?id=.*?>";
static String reg_id = "id=\\w+?\\b";
public static void main(String[] arg) throws Exception{
String s = "<div id=yschres> <div id=yschcont style=\"margin-left:0px;\"> <div id=yschpri style=\"margin-left:5px;\"> <div id=yschrel>";
String ret = trans(new StringBuffer(s),reg_div,replace_div).toString();
System.out.println(s);
System.out.println(ret);
}
static I_Trans replace_id = new I_Trans(){
// id=yschres to id="yschres"
public String doTrans(String org){
return org.substring(0,3)+"\""+org.substring(3)+"\"";
}
};
static I_Trans replace_div = new I_Trans(){
public String doTrans(String org){
// for the <div...>, find id=... and replace it
return trans(new StringBuffer(org),reg_id,replace_id).toString();
}
};
public static StringBuffer trans(StringBuffer org,String orgrex,I_Trans itrans){
Pattern p = Pattern.compile(orgrex);
Matcher m = p.matcher(org);
StringBuffer sb = new StringBuffer();
String replacement = "";
while(m.find()){
replacement = m.group();
// System.out.println("find one:"+replacement);
replacement = itrans.doTrans(replacement);
m.appendReplacement(sb,replacement);
}
m.appendTail(sb);
return sb;
}}
/**
* indicate how to replace the found string
*/
interface I_Trans{
public String doTrans(String s);
}