2008-12-10 35 views
9

Hoy descubrí que poner cadenas en un archivo de recursos hará que sean tratados como literales, es decir, poner "Texto para primera línea \ n Texto para segunda línea" hará que el propio carácter de escape se convierta escapado, y entonces lo que está almacenado es "Texto para primera línea \ n Texto para segunda línea" - y luego estos aparecen en la pantalla, en lugar de mi carro y pestañascadena reemplazar caracteres de escape

Entonces, lo que me gustaría hacer es usar string.replace para convertir \\ en \ - esto no parece funcionar.

s.Replace("\\\\", "\\");

no cambia la cadena en absoluto, porque la cadena piensa que sólo hay 1 barra invertida

s.Replace("\\", "");

reemplaza todas las comillas dobles y me deja con sólo n en lugar de \ n

también , usando @ y la mitad como muchos \ caracteres o el Regex.Replace método da el mismo resultado

cualquiera sabe de un buen forma de hacer esto sin pasar de personaje en personaje?

+0

Creo que puede haber un error tipográfico aquí en alguna parte. Puedo entender aproximadamente qué es lo que está preguntando por contexto, pero esto: "use string.replace para convertir \ into \ - esto no parece funcionar". no tiene ningún sentido, ya que parece que quieres convertir barras diagonales simples en barras invertidas simples. – recursive

+0

lo siento, se suponía que eran 2 barras invertidas en 1 barra invertida – LoveMeSomeCode

Respuesta

14

Dado que \n es en realidad un solo carácter, no se puede lograr esto simplemente reemplazando las barras invertidas en la cadena. Tendrá que reemplazar cada par de \ y el carácter que sigue con el carácter de escape, como:

s.Replace("\\n", "\n"); 
s.Replace("\\t", "\t"); 
etc 
+2

Cuando lo probé (programa C#), tuve que usar "s = s.Replace (" \\ n "," \ n ");". –

8

que sería mejor servido el ajuste de la resx archivos mismos. Los saltos de línea se pueden ingresar a través de dos mecanismos: Puede editar el archivo resx como XML (haga clic con el botón derecho en el Explorador de soluciones, elija "Abrir como" y elija XML), o puede hacerlo en el diseñador.

Si lo hace en XML, simplemente presione Enter, retroceda hasta el comienzo de la nueva línea que ha creado, y listo. También puedes hacer esto con Buscar y Reemplazar, aunque será complicado.

Si utiliza el editor de ress GUI, mantener presionada la tecla MAYÚS mientras presiona ENTRAR le dará un salto de línea.

Podría hacer el reemplazo en tiempo de ejecución, pero como está descubriendo, es complicado ponerse en marcha, y en mi opinión constituye un olor a código. (También puede hacer un argumento de rendimiento, pero eso dependerá de la frecuencia con la que se invocan los recursos de cadenas y la escala de su aplicación en general.)

0

En realidad voy con la solución de John y editando el XML directamente, ya que ese es el una mejor solución para el proyecto, pero Codelogic respondió la pregunta que me estaba volviendo loco.

+0

Gracias por * no * publicar lo que encontraste en codelogic. – mpen

+0

ha. Codelogic es un tipo. él publicó la respuesta que marqué correcta. Cerca de 20 líneas arriba de este comentario. – LoveMeSomeCode

+0

Oh ... jaja. No leí los nombres de usuario: D Pensé que era un sitio web elegante. – mpen

Cuestiones relacionadas