online interpolated escape before c# .net string escaping

c# - interpolated - ¿Cómo puedo Unescape y Reescape cadenas en.net?



regex escape c# (3)

Necesito un TextBox en un control WPF que pueda tomar texto como Commit/r/n/r (que es la cadena .net "Commit//r//n//r" ) y volver a convertirlo en "Commit/r/n/r" como una cadena .net. Esperaba un par de métodos string.Unescape () y string.Escape (), pero no parece existir. ¿Voy a tener que escribir el mío? ¿O hay una manera más simple de hacer esto?


Código de Hans, versión mejorada.

  1. Hecho que use StringBuilder - un realzador de rendimiento real en cuerdas largas
  2. Hecho un método de extensión.

    public static class StringUnescape { public static string Unescape(this string txt) { if (string.IsNullOrEmpty(txt)) { return txt; } StringBuilder retval = new StringBuilder(txt.Length); for (int ix = 0; ix < txt.Length; ) { int jx = txt.IndexOf(''//', ix); if (jx < 0 || jx == txt.Length - 1) jx = txt.Length; retval.Append(txt, ix, jx - ix); if (jx >= txt.Length) break; switch (txt[jx + 1]) { case ''n'': retval.Append(''/n''); break; // Line feed case ''r'': retval.Append(''/r''); break; // Carriage return case ''t'': retval.Append(''/t''); break; // Tab case ''//': retval.Append(''//'); break; // Don''t escape default: // Unrecognized, copy as-is retval.Append(''//').Append(txt[jx + 1]); break; } ix = jx + 2; } return retval.ToString(); } }


Los siguientes métodos son los mismos que las funciones de escape / unescape de javascript:

Microsoft.JScript.GlobalObject.unescape(); Microsoft.JScript.GlobalObject.escape();