2010-03-18 38 views
9

Obtengo de otra cadena de clase que se debe convertir a char. Por lo general, contiene solo un carácter y eso no es un problema. Pero los caracteres de control los recibo como '\\ n' o '\\ t'. ¿Hay métodos estándar para convertir esto en línea de destino o tab tab char o necesito analizarlo yo mismo?Convertir cadena a char

editar: Disculpe, el analista come una barra. Recibo '\\ t'

+0

La clase de la que está recibiendo la cadena está haciendo algo no estándar por lo que los caracteres ya no son caracteres de control, se han convertido (innecesariamente) a una cadena literal más larga. Tendrás que tener un caso especial para manejarlos. – rohancragg

+1

esto parece familiar !: http://www.infoqu.com/dev/c-programming/weeding-out-control-characters-in-c-30095-1/ – rohancragg

+1

Puede ser una pregunta estúpida, pero ¿estás mirando? el valor en una ventana de observación? La ventana del reloj agregará un extra \, ¿está seguro de que la cadena es "\\ t"? – Geoff

Respuesta

3

Nueva línea:

string escapedNewline = @"\\n"; 
string cleanupNewLine = escapedNewline.Replace(@"\\n", Environment.NewLine); 

O

string cleanupNewLine = escapedNewline.Replace(@"\\n", "\n"); 

Tab:

string escapedTab = @"\\t"; 
string cleanupTab= escapedTab.Replace(@"\\t", "\t"); 

nota la falta de la cadena literal (es decir, no usamos @ "\ t" porque eso no representará una pestaña)

Alternativamente, podría considerar Regular Expressions si necesita reemplazar un rango de diferentes patrones de cuerda.

probablemente debería escribir una función de utilidad para encapsular el comportamiento común por encima de todas las posibles Escape Sequences

Entonces escribiría algunos Unit Tests para cubrir cada uno de los casos que se pueda imaginar.

Cuando encuentre algún error, agregue más pruebas unitarias para cubrir esos casos.

ACTUALIZACIÓN

Se podría representar una pestaña en el XML con una secuencia de caracteres especiales:

	see this article

This article se aplica a SQL Server, pero también puede ser relevante para C# también?

Para estar absolutamente seguro, podría intentar generar una cadena con una pestaña y ponerla en algún XML (mediante programación) y usar XmlSerializer para serializar eso en un archivo para ver cuál es la salida, entonces puede estar seguro que esto fielmente 'redondo' la cadena con la pestaña todavía en él.

+0

Parece que esta es solo la variante disponible. –

17

Supongo que quiere decir que la clase que le envía los datos le envía una cadena como "\ n". En ese caso se tiene que analizar esto por sí mismo usando:

Char.Parse(returnedChar) 

De lo contrario, puede simplemente echarlo a una cadena como esta

(string)returnedChar 
+0

Esa clase lo lee del archivo. Entonces, si el archivo contiene \ n yo recibo \\ n ese es mi problema. –

5

cómo sobre el uso de string.ToCharArray()

A continuación, puede añadir el adecuado lógica para procesar lo que haya en la cadena.

1

char.parse (cadena); se usa para convertir cadena a char y puedes hacer viceversa char.Encadenar(); 100% resuelto