我有如下形式的字符串:
[SIZE=5]字号的大小[/SIZE]
字体颜色求一个正则表达式,可以将这些替换成<font style=size:5>字号的大小</font>
<font style=color:orange>字体的颜色</font>
[SIZE=5]字号的大小[/SIZE]
字体颜色求一个正则表达式,可以将这些替换成<font style=size:5>字号的大小</font>
<font style=color:orange>字体的颜色</font>
(\[color=(.[^\[]*)\])(.[^\[]*)(\[\/color\])
reg1="(\\[color=(.[^\\[]*)\\])(.[^\\[]*)(\\[\\/color\\])";
reg ="(\\[size=5\\])(.[^\\[]*)(\\[\\/size\\])";
s=s.toLowerCase().replaceAll(reg1,"");
// s=s.toLowerCase().replaceAll(reg,"");
System.out.println(s);
先用正则表达式解析出标签,如size(用来决定调用什么类装饰),以及属性5
然后用有一个类,如SizeDecorater,它有一个构造函数SizeDecorater(String content, String value)——它们分别对应类的属性,然后用一个函数返回:
"<font style=size:" + value + ">" + content + "</font>"
其他同理。这种方法可以处理其他类型的标签以及嵌套标签。简单的做,此列可用:
String str ="[SIZE=5]te[/SIZE]";
System.out.println(str.replaceAll("\\[SIZE=(\\d+)\\](.+)\\[/SIZE\\]", "<font style=size:$1>$2</font>"));
这种方法不能处理其他的标签
String regex = "\\[(\\w+)=(\\w+)\\](.+)\\[/\\1\\]";
String format = "<font style=$1:$2>$3</$1>";
String str ="[SIZE=5]字号的大小[/SIZE]";
System.out.println(str.toLowerCase().replaceAll(regex, format));
str = "我要的内容";
System.out.println(str.toLowerCase().replaceAll(regex, format));
String regex = "\\[(\\w+)=(\\w+)\\](.+)\\[/\\1\\]";
String format = "<font style=$1:$2>$3</font>";
String str ="[SIZE=5]字号的大小[/SIZE]";
System.out.println(str.toLowerCase().replaceAll(regex, format));
str = "我要的内容";
System.out.println(str.toLowerCase().replaceAll(regex, format));
String format = "<font style=$1:$2>$3</font>";
String str ="[SIZE=5]字号的大小[/SIZE]";
System.out.println(str.toLowerCase().replaceAll(regex, format));
str = "我要的内容";
System.out.println(str.toLowerCase().replaceAll(regex, format));