Yanıtlar:
Bu, aşağıdakilerin sonundan herhangi bir satırbaşı ve satırsonu kombinasyonunu kesecektir s
:
s = s.TrimEnd(new char[] { '\r', '\n' });
Düzenleme : Veya JP'nin nazikçe işaret ettiği gibi, bunu daha kısa ve öz olarak şu şekilde yazabilirsiniz:
s = s.TrimEnd('\r', '\n');
s = s.TrimEnd()
- belgelerin dediği gibi: trimChars null veya boş bir diziyse, bunun yerine Unicode beyaz boşluk karakterleri kaldırılır. - bkz String.TrimEnd
'\r'
ve '\n'
ve başka bir şey değil, boşluk karakteriyle ' '
mesela.
Birden fazla platform kullanıyorsanız, bu yöntemi kullanmak daha güvenlidir.
value.TrimEnd(System.Environment.NewLine.ToCharArray());
Farklı satırsonu ve satır başı karakterlerini hesaba katacaktır.
tst.TrimEnd( '\r', '\n' )
- majör EOL 'larla [şu anda] sadece farklı kombinasyonları olduğundan pratikte makul "güvenli" olduğunu \r
ve \n
ancak alexw yılların "doğru" cevap. CLR size bu platformun satırsonu içinde hangi karakterlerin olduğunu söylesin. EOL her zaman 0D'ler ve 0A'ların kombinasyonu değildi
Environment.NewLine
ama bu, \r
olmadan mevcut olan durumları idare edemiyordu \n
. TrimEnd('r','\n')
bu durumda daha güvenilir görünüyor.
String temp = s.Replace("\r\n","").Trim();
s
orijinal dize olmak. (Büyük harflere dikkat edin)
replace()
o zaman trim()
değil overkill zaman TrimEnd()
yalnız iş yapabilirsiniz, veya bir şey eksik?
s.TrimEnd();
Dizimin sonundan '\ r \ n' öğesini kaldırmak için ihtiyacım olan tek şey yukarıdakilerdi.
İyileştirilen cevap bana yanlış geliyor. İlk olarak, ben işi yapsam ben s.TrimEnd ( '\ r', '\ n') sadece yer kalmayacağını beklenir, ikinci olarak çalıştığında iş vermedi ya bir '\ r' veya '\ n' , bu yüzden onu dizem üzerinde iki kez çalıştırmam gerekir - bir kez '\ n' sonunda ve ikinci kez '\ r' sonunda olduğunda (artık '\ n' kaldırıldı) .
Her zaman tek bir CRLF varsa, o zaman:
myString = myString.Substring(0, myString.Length - 2);
Sahip olabilir veya olmayabilirse, o zaman:
Regex re = new Regex("\r\n$");
re.Replace(myString, "");
Bunların her ikisi de (tasarım gereği) en fazla tek bir CRLF'yi kaldıracaktır. Performans için normal ifadeyi önbelleğe alın.
Bu çok kolaydı - benim için belirli e-posta öğelerini filtreliyorum. Kendi özel önemsiz e-posta filtremi yazıyorum. Dizede \ r ve / veya \ n ile filtreleme yerine tüm öğeleri siliyordu.
Yani, filtre = filtre yaptım. Kaldır ('\ n') ve filtre = filtre.Kaldır ('\ r'). Filtremi, bir son kullanıcının dosyayı doğrudan düzenlemek için Not Defteri'ni kullanabileceği şekilde yapıyorum, böylece bu karakterlerin kendilerini nereye yerleştirebileceğini bilmiyor - dizenin başında veya sonunda olabilir. Yani hepsini kaldırmak bunu yapıyor.
Diğer girişlerin hepsi çalışır, ancak Kaldır en kolayı olabilir mi?
Bu gönderiden Regex hakkında biraz daha fazla şey öğrendim - burada kullanımı ile oldukça güzel bir çalışma.
filter = filter.Remove('\n').Remove('\r');
Çok fazla silme seviyesi kullanıyorum
String donen = "lots of stupid whitespaces and new lines and others..."
//Remove multilines
donen = Regex.Replace(donen, @"^\s+$[\r\n]*", "", RegexOptions.Multiline);
//remove multi whitespaces
RegexOptions options = RegexOptions.None;
Regex regex = new Regex("[ ]{2,}", options);
donen = regex.Replace(donen, " ");
//remove tabs
char tab = '\u0009';
donen = donen.Replace(tab.ToString(), "");
//remove endoffile newlines
donen = donen.TrimEnd('\r', '\n');
//to be sure erase new lines again from another perspective
donen.Replace(Environment.NewLine, "");
ve şimdi temiz bir satırımız var
varName.replace(/[\r\n]/mg, '')
Benim için çalışmam gereken şey bu.
s.Replace("\r","").Replace("\n","")