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.
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
esto parece familiar !: http://www.infoqu.com/dev/c-programming/weeding-out-control-characters-in-c-30095-1/ – rohancragg
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