日期:2014-05-20  浏览次数:20618 次

各位大牛问帮帮给解决一下
小弟现在有一段字符串(下面的只是一部分)
<FONT size=4>记泥城2路党员班组长顾国兴</FONT></STRONG></SPAN></P>
<P style="LINE-HEIGHT: 25pt; TEXT-INDENT: 28pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-line-height-rule: exactly" class=MsoNormal><SPAN style="FONT-FAMILY: 仿宋_GB2312; FONT-SIZE: 14pt">泥城2<FONT face=仿宋_GB2312>路,有位驾驶员,名叫顾国兴,是一名营运一线的党员班组长。他有着出色的职业技能和爱岗敬业的精神,而且关键时刻常常能挺身而出。<SPAN lang=EN-US><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></FONT></SPAN></P>
咋样把这段字符串里包括FONT-FAMILY:和face=后面的不管是啥字体都给替换成宋体
小弟非常急用 那为大牛给解决一下

------解决方案--------------------
用replaceAll替换两次即可。写了个不完善的,给你参考一下:
Java code

    public static void main(String[] args) {
        String s = "<SPAN style=\"FONT-FAMILY: 仿宋_GB2312; FONT-SIZE: 14pt\">泥城2<FONT face=仿宋_GB2312>";
        s = s.replaceAll("FONT-FAMILY\\s*:.+?;", "FONT-FAMILY:宋体");
        s = s.replaceAll("<FONT\\s+face\\s*=.+?>", "<FONT face=宋体>");
        System.out.println(s);
    }

------解决方案--------------------
就是用正则啦,这样也可以(一次replaceAll完成):

String str = "<FONT size=4>记泥城2路党员班组长顾国兴</FONT></STRONG></SPAN></P><P style=\"LINE-HEIGHT: 25pt; TEXT-INDENT: 28pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0; mso-line-height-rule: exactly\" class=MsoNormal><SPAN style=\"FONT-FAMILY: 仿宋_GB2312; FONT-SIZE: 14pt\">泥城2<FONT face=仿宋_GB2312>路,有位驾驶员,名叫顾国兴,是一名营运一线的党员班组长。他有着出色的职业技能和爱岗敬业的精神,而且关键时刻常常能挺身而出。<SPAN lang=EN-US><?xml:namespace prefix = o ns = \"urn:schemas-microsoft-com:office:office\" /><o:p></o:p></SPAN></FONT></SPAN></P>";
System.out.println(str.replaceAll("(?<=FONT-FAMILY:).*?(?=;)|(?<=FONT face=).*?(?=>)", "宋体"));

------解决方案--------------------
探讨

(?<=FONT-FAMILY:):匹配值前面是 FONT-FAMILY:
.*?:尽量少的任意字符。
(?=;):匹配值后面是;