Diferentes etiquetas de formato de texto enriquecido para diferentes saltos de línea (\r, \n, \r\n).
Estoy intentando editar código (C++/C#/Java) en un RichTextBox de una aplicación de Windows Forms.
Dado que hay diferentes separadores de línea en diferentes plataformas, estoy utilizando este código para codificar el texto enriquecido:
value = value
.Replace("\r\n", "\\par ")
.Replace("\r", "\\par ")
.Replace("\n", "\\par ");
Los 3 tipos de separadores de línea se muestran correctamente. Pero luego me di cuenta de que, dado que \r\n (2 caracteres en el contenido del archivo) se ha codificado como \par (1 caracter en RichTextBox.Text), el índice de un determinado texto es diferente. Por lo tanto, RichTextBox.Select(indice, longitud) seleccionará el texto en la posición incorrecta si la posición se calculó a partir del contenido del archivo sin procesar. Por cada línea adicional, la diferencia de índice aumenta en 1.
Estoy pensando si hay algo como “\return\par”, que se cuenta como 2 caracteres pero se muestra como 1 separador de línea; y en RichTextBox.Text (se guardará como contenido del archivo), se decodifica como “\r\n”.
Y si no hay otra forma, ¿existe alguna otra manera de alinear el índice del contenido del archivo y RichTextBox.Text? Gracias.
Por cierto, tengo una forma poco elegante de solucionarlo: RichTextBox.Select(indice – numeroLinea, longitud). Pero es realmente feo.
davy.ai
Solución para editar código en un RichTextBox en una aplicación WinForms
Cuando se edita código en un RichTextBox de una aplicación WinForms, puede haber problemas con diferentes caracteres de salto de línea en diferentes plataformas. Para codificar el texto enriquecido, se puede utilizar el siguiente código:
“`C#
valor = valor
.Replace(“\r\n”, “\par “)
.Replace(“\r”, “\par “)
.Replace(“\n”, “\par “);
Si bien esta solución puede considerarse “poco elegante”, ofrece una manera de resolver el problema hasta que se encuentre una solución más limpia.