2016-04-06 29 views
3

Dize var. Kolaylık olması açısından bu gibi görünebilir:Çoklu dize değiştirmeleri (aynı dize içinde)

\r\n\r\n\r\n 

Ayrıca geçtiği diğer olabilirdi '\ r \ n' - Sadece burada en basit sorunu post ediyorum.

ben görünen bir dize ile bitirmek bekliyoruz yukarıdaki Örneğin '\ r \ n \ r \ n' her oluşumu arasına boşluk eklemek gerekiyor gibi:

\r\n \r\n \r\n 

I CAN (beklenilen sonucu üretmek için dizeleri bir sürü oluşturur çünkü sevmiyorum olan) aşağıdaki kodu kullanarak bunu:

string newString = "\r\n\r\n\r\n"; 
while (newString.Contains("\r\n\r\n")) 
     newString = newString.Replace("\r\n\r\n", "\r\n \r\n"); 

Ben problemler String.Replace kullanabilir veya anlamaya çalışırken zorlanan bir Bunu benim için yapabilecek düzenli ifade.

ben şöyle String.Replace (hatta bir StringBuilder.Replace) kullanmaya çalışırsanız

...

var result = "\r\n\r\n\r\n".Replace("\r\n\r\n", "\r\n \r\n"); 

ben regex yerine düşünüyorum

"\r\n \r\n\r\n" //There is no space between the last two carriage return/line feed 

ile bitirmek could hile yapmak, ama ilk değiştirmeden sonra \ r \ n tüm oluşumları değiştirmek için regex motoru tembel bir eşleşme yapmak için nasıl elde edeceğini anlayamıyorum.

Benzer bir sorun bulmaya çalışırken SO ve google'da arama yaptım, ancak kullanımda hiçbir şey olmadı. Bu bir yinelenen ise önceden özür dilerim, ama eğer, bulamıyorum!

Özetle, bunu while döngüsünü kullanarak yapabilirim, ama daha zarif bir çözüm olup olmadığını bilmek isterdim?

DÜZENLEME

Üzgünüz - bu biraz daha vardır: da şöyle bir dize inceleyebilir Kodum:

5\r\n\r\nTest\r\n 

Bu durumda, görmek beklenir şöyle bir dize:

5\r\n \r\nTest\r\n 

Yani - sadece değiştirmek istemiyorum '\ r \ n' '\ r \ n' Bu Yara sarıcı olarak birlikte

"5\r\n \r\n Test\t\n " 
+0

denemek Can-dizge = newString.Replace ("\ r \ n", "\ r \ n") .Trim(); ? –

+0

Maalesef, sorumun önemli bir bölümünü ihmal ettiğimi fark ettiğim gibi daha fazla ayrıntı ekledim. – Jay

cevap

4

Önünüzde bir göz kullanmak ve sadece "arasında" bölümünü eşleşecek şekilde geride bakabilirsiniz: ld bana Ike görünen bir dize verir. "\ R \ n \ r \ n \ r \ n" olmak test neden olur

string test = "\r\n\r\n\r\n"; 
Regex reg = new Regex("(?<=\r\n)(?=\r\n)"); 
test = reg.Replace(test, " "); 

.

+0

Bu bebeği sadece birim testime taktım ve ilk kez geçti ... teşekkürler! – Jay

-1
"\r\n\r\n\r\n".Replace("\n\r", "\n \r"); 
+0

Üzgünüm - lütfen qquestion'daki düzenleme konusuna bakın - bu, yapmaya çalıştığım şey değil – Jay

+0

Bu işlem basitleştiriliyor. "\ N \ r" gibi bir dize, OP'nin gereksinimlerine göre yerleştirilen bir boşluk almamalıdır. – juharr

+0

Juharr, "\ n \ r" değişken olarak kullanabilir. Bu sadece bir örnektir. –