2010-04-18 20 views
17

Commit\r\n\r (.et string "Commit\\r\\n\\r") gibi bir metni alabilen bir WPF denetiminde bir TextBox'a ihtiyacım var ve bir .net dize olarak "Commit\r\n\r"'a dönüştürebilirsiniz. Bir string.Unescape() ve string.Escape() yöntem çifti umuyordum, ancak görünmüyor. Kendi yazmam gerekecek mi? veya bunu yapmanın daha basit bir yolu var mı?Net olmayan ve dizeleri Net olarak nasıl temizlerim?

+1

Metin kutusuna yazmayın, sadece Enter tuşuna basın. –

+0

ve eğer \ r \ n \ r \ r demek istiyorlarsa? (evet, bu bu modelde uygulanabilir bir durumdur) – Firoso

+5

Şuna bakın: http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/08bb20a2-82b9-4f2f-9f1a-994961fbecc3/ –

cevap

6

Hans'un kodu, geliştirilmiş sürümü.

  1. bu StringBuilder kullanımı yapılmış - gerçek performans yükseltici yapılmış uzun dizeleri
  2. ile bu yöntem aşağıdakı

    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(); 
        } 
    } 
    
+0

FYI'yi hak ediyor, listelenen fonksiyonun yanlış adı var - bu/unscaping/string, ama EscapeStringChars() olarak adlandırılıyor. – redcalx

35
System.Text.RegularExpressions.Regex.Unescape(@"\r\n\t\t\t\t\t\t\t\t\tHello world!") 

Regex.Unescape method documentation

+6

System.Text.RegularExpressions.Regex.Unescape() – Dragouf

+9

Bunun 'Regex'e özgü olduğunu ve ayrıca' @ '\ ["' in '@" ["' gibi dizelerden kaçtığını ve yalnızca normal ifade değil normal ifade. – Silvermind

2

aynıdır bir uzatma yöntemi javascript kaçış/unescape fonksiyonları:

Microsoft.JScript.GlobalObject.unescape(); 

Microsoft.JScript.GlobalObject.escape();