Actionscript - uso de expresiones regulares y TextFormat para el estilo de texto entre las etiquetas HTML

StackOverflow https://stackoverflow.com/questions/9519857

Pregunta

He estado luchando con este problema por un tiempo:

Tengo una cadena que contiene HTML y voy a utilizar una expresión regular para obtener los caracteres entre las etiquetas.Estoy intentando aplicar un TextFormat a los personajes.

El problema es que estoy usando el campo de texto del "htmlText" de la propiedad en lugar de su propiedad "text" (porque no quiero que las etiquetas HTML para ser visible).Así, el carácter de índice que se devuelve desde la expresión regular es incorrecta, cuando aplico el TextFormat.

Aquí está el código de ejemplo que ilustra el problema:

var txt:String = "<b>Sample</b> string with bold text";

var tf:TextField = new TextField();
addChild(tf);
tf.htmlText = txt;

var format:TextFormat = new TextFormat();
format.bold = true;

var regExp:RegExp = /<b>(.*?)<\/b>/g;
var match:Object = regExp.exec(txt);
while (match != null) {
    tf.setTextFormat(format, match.index, match.index + match[0].length);
    match = regExp.exec(txt);
}

Esto me da:

"Cadena de ejemplo con el texto en negrita"

en lugar de la deseada:

"La muestra cadena con el texto en negrita"

porque match[0].length es de siete caracteres demasiado largo, debido a las etiquetas HTML <b></b>.

¿Qué puedo hacer acerca de esto?Gracias!

¿Fue útil?

Solución

El Uso De TextField.htmlText, <b> las etiquetas deben dar el texto en negrita, sin necesidad de TextFormat.negrita o regexp, siempre incrustar el derecho de fuentes (o utilizar fuentes del dispositivo).

Pero, sé que a veces hay problemas con el HTML de apoyo en los campos de texto en combinación con el manejo de fuentes, y tal vez su situación real es más complejo que el ejemplo con el texto en negrita.En ese caso me gustaría recomendar el uso de La hoja de estilos el formato en lugar de la regexp/TextFormat combo.Además del problema con el offset de desajuste que se ha encontrado, creo que la combinación de estos dos enfoques diferentes para el formato de texto HTML y TextFormat - se corre el riesgo de dar a otros problemas, mientras que el uso de texto HTML y hojas de estilos están destinados a ser utilizados juntos.

Empecé a escribir un ejemplo del uso de la hoja de estilos/htmlText, pero desde <b> debe funcionar de todos modos, sin estilo, se puso un poco raro, así que me raspó.Pero déjeme saber si usted necesita un código de ejemplo.

Otros consejos

tf.setTextFormat(format, match.index, match.index + match[1].length); 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top