0

我将 a 的htmlText属性存储RichTextEditor在数据库中。

我在另一个实例中检索它,我想向用户显示它的第一行作为纯文本

所以我让 Flex 使用这样的函数来处理转换

var editor:TextField = new TextField();
editor.htmlText = htmlTextFromDb;
var converted:String = editor.text;

但是,问题是这种转换不能正确处理行。我把所有东西都放在一条线上!

可以说我从数据库中得到的是这个

<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Arial" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">This is line one</FONT></P></TEXTFORMAT><TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Arial" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">This is line two</FONT></P></TEXTFORMAT>

我一说editor.htmlText = htmlTextFromDb,editor.htmlText 就变成了

<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Arial" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">This is line oneThis is line two</FONT></P></TEXTFORMAT>

它就像不存在新行一样。

我该如何解决这个问题?

4

1 回答 1

1

我会考虑这个 HTML 文本的服务器端转换。

但是只有在 AS 中,您可以通过在换行符处拆分,然后将行转换为文本并在此之后将所有内容连接起来来逐行执行。有点难看,但应该可以。

var editor:TextField = new TextField();
var result:Array = new Array();
var input:Array = htmlTextFromDb.split(/\n/);
for each( var line:String in input) {
    editor.htmlText = line;
    result.push(editor.text);
}
var converted:String = result.join("\n");

编辑

用正则表达式替换标签将是另一种方式。</P>首先用换行符替换结束段落,然后删除所有剩余的标签。

var lnRegExp:RegExp = new RegExp("</P>", "g");
s = s.replace(lnRegExp, "\n");
var tagRegExp:RegExp = new RegExp("<([^>\\s]+)(\\s[^>]+)*>", "g");
trace(s.replace(tagRegExp, ""));
于 2011-06-28T10:10:49.057 回答