0

需要帮助尝试编写一些 RegEx 或修复一些 Adob​​e Flex HTML 标签的函数。我们已经修复了大部分问题,但在对齐标签方面遇到了麻烦。问题是 Flex 从其 RichTextEditor 中保存 html,如下所示:

<TEXTFORMAT LEADING="2">
<P ALIGN="LEFT">
<FONT FACE="Arial" STYLE="font-size: 10pt" size="10" COLOR="#000000" LETTERSPACING="0" KERNING="0">
Test Line 1
</FONT>
</P>
<TEXTFORMAT LEADING="2">
<P ALIGN="CENTER">
<FONT FACE="Arial" STYLE="font-size: 10pt" size="10" COLOR="#000000" LETTERSPACING="0" KERNING="0">
Test Line 2
</FONT>
</P>

我们试图想出一种方法来替换 P ALIGN=" _ _" 与其等效的 html4 标记,例如左、右、居中、对齐。但是我们还需要替换它的结束标签。

上面的例子会变成这样

<TEXTFORMAT LEADING="2">
<left>
<FONT FACE="Arial" STYLE="font-size: 10pt" size="10" COLOR="#000000" LETTERSPACING="0" KERNING="0">
Test Line 1
</FONT>
</left>
<TEXTFORMAT LEADING="2">
<center>
<FONT FACE="Arial" STYLE="font-size: 10pt" size="10" COLOR="#000000" LETTERSPACING="0" KERNING="0">
Test Line 1
</FONT>
</center>

有人做过这样的事吗?

4

2 回答 2

0

您可以很好地使用正则表达式将 p align 标签替换为它们各自的值。

对于像这样的输入

<P ALIGN="LEFT">xyz</P><SomeTag></SomeTag><P ALIGN="CENTER">xyz</P>;

这是代码,

    public static void main(String[] args) {        
        String str = "<P ALIGN=\"LEFT\">xyz</P><SomeTag></SomeTag><P ALIGN=\"CENTER\">xyz</P>";
        Pattern pattern = Pattern.compile("(?i)<(P ALIGN=\")([^\"]+)([^>]+)>([^<]+)<([^>]+)");
        Matcher matcher = pattern.matcher(str);
        while(matcher.find()) {         
            str = str.replaceFirst(matcher.group(1), ""); // replaces <p align
            str = str.replaceFirst(matcher.group(3), ""); // replaces the single quote after LEFT or CENTER
            str = str.replaceFirst(matcher.group(5), "/" + matcher.group(2)); // replaces /P from the ending tag with /LEFT or /CENTER 
        }
        System.out.println(str);
    }

输出

<LEFT>xyz</LEFT><SomeTag></SomeTag><CENTER>xyz</CENTER>
于 2012-10-31T17:46:50.330 回答
0

我只是在考虑使用带有一些手动操作的两个正则表达式,如下所示:

      String startingTagPattern = "<P ALIGN=\"[\\w]\">";
      String endTagPattern = "</p>";

现在,如果startingTagPattern 匹配,则获取匹配的标记行:

      String tagLine = match.group(0);
      String alignString = tagLine.substring(8,tagLine.lastIndexOf("\""));

现在您可以将标签输出为:

      String startTag = "<"+alignString+">";
      String endTag = "</"+alignString+">";
于 2012-10-31T16:43:28.643 回答