Pergunta

Eu estive lutando com este problema por um tempo:

Eu tenho uma seqüência de caracteres que contém HTML e eu estou usando uma expressão regular para obter os caracteres entre as marcas.Eu sou, em seguida, tentar aplicar um TextFormat para esses caracteres.

O problema é que estou usando o TextField do "htmlText" a propriedade em vez de sua propriedade "texto" (porque eu não quero que os códigos HTML para ser visível).Assim, o índice de caractere que é retornado a partir da expressão regular é incorreta, quando eu aplicar o TextFormat.

Aqui está um exemplo de código que ilustra o 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);
}

Isso me dá:

"Exemplo de seqüência de caracteres com texto em negrito"

em vez do desejado:

"Exemplo string com o texto em negrito"

porque match[0].length é de sete caracteres muito longa, devido ao tags HTML <b></b>.

O que posso fazer sobre isso?Obrigado!

Foi útil?

Solução

Usando TextField.htmlText, <b> tags deve dar o texto em negrito, sem qualquer necessidade de TextFormat.negrito ou regexp, fornecido incorporar as fontes de direito (ou usar fontes de dispositivo).

Mas, eu sei que às vezes há problemas com o suporte a HTML no TextFields em combinação com manipulação de fontes, e, talvez, a sua situação real é mais complexo do que o exemplo com o texto em negrito.Nesse caso eu recomendaria usar Folha de estilos formatação em vez de regexp/TextFormat de combinação.Para além do problema com o deslocamento de incompatibilidade que você já encontrou, eu acredito que a combinação das duas abordagens diferentes para a formatação de texto HTML e TextFormat - corre o risco de dar outros problemas, enquanto que o uso de HTML, texto e de folha de Estilos são feitos para serem usados juntos.

Eu comecei a escrever um exemplo de uso de Folha de estilo/htmlText, mas desde que <b> deve funcionar de qualquer maneira, sem estilo, ele ficou um pouco estranho, então eu escovava.Mas deixe-me saber se você precisar de código de exemplo.

Outras dicas

tf.setTextFormat(format, match.index, match.index + match[1].length); 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top