0

htmlTextのプロパティをデータベースに保存しRichTextEditorます。

別のインスタンスでそれを取得し、その最初の行プレーン テキストとしてユーザーに表示したい

したがって、このような関数を使用して、Flex に変換を処理させます。

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

ただし、この変換では行が適切に処理されないという問題があります。私はすべてを1行で取得します!

私がデータベースから得たものはこれだとしましょう

<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 でのみ、改行で分割し、その行をテキストに変換し、その後すべてを連結することで、1 行ずつ実行できます。少し醜いですが、動作するはずです。

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 に答える