2016-03-28 18 views
-2

\ n ya \ r veya değiştirme için en iyi yolu nedir bazı karakterleri değiştirmek için \ r \ n onlar C# kullanarak boş bir dizenasıl bir dize

ile, çift tırnak arasında olduğunda? Örnek

: "abc \ ndef"

+3

denediniz mi? String.Replace'ı denediniz mi? "En iyi" yi tanımla Çift tırnakların bir şeyle ne ilgisi var? Değiştirilmemesi gereken çift tırnak dışında yeni satırlar var mı? –

+0

Evet, tırnak içinde yeni satırın değiştirilmesi gerekiyor ve çift tırnak işareti dışında tutulması gerekiyor, – nice

+0

olduğu gibi, "abc \ ndef" varsa \ n "ghi \ n" "abcdef" almak istiyorum \ n " ghi " – nice

cevap

0

şey:

public static String RemoveQuots(String source) { 
    if (String.IsNullOrEmpty(source)) 
    return source; 

    StringBuilder sb = new StringBuilder(source.Length); 

    Boolean inQuot = false; 

    foreach (var ch in source) { 
    if (ch == '"') 
     inQuot = !inQuot; 

    if (!inQuot || ((ch != '\n') && (ch != '\r'))) 
     sb.Append(ch); 
    } 

    return sb.ToString(); 
} 

... 

String source = "\"abc\ndef\""; 
String result = RemoveQuots(source); 

Açıklanmıştır testi

String source = "preserved: \n \"deleted: \n\" \"\" preserved: \n tail"; 
    // preserved: 
    // "deleted: " "" preserved: 
    // tail 
    String result = RemoveQuots(source); 

Açıklama:

1st \n is out double quots 
    2nd \n is within double quotes: \"deleted: \n\" (note \") 
    3d \"\" is just empty "" *string* so \n is once again doomed to be deleted 
+0

Dizgiden tüm \ n yerine geçer. Çok teşekkür ederim, aradığım cevap bu! – nice

0

emin değil "abcdef" olmalıdır eğer onun "en iyi", ama bu çalışacaktır:

string a = "abc\nefg"; 

    a = string.Concat(a.Split(new char[] { '\n', '\r' })); 

Eğer Sitemiz en iyi ne anlama geldiğini tanımlar mısınız? En hızlı? Daha az kod? Okunabilir? Böyle

0

Kullanım string.Replace

string b = "abc\ndef"; 

b = string.Replace("\n", ""); 

Çıktı: Ne

b = "abcdef"