ฉันจะลบอักขระส่งคืนแคร่(\r)
และอักขระบรรทัดใหม่(\n)
ออกจากส่วนท้ายของสตริงได้อย่างไร
ฉันจะลบอักขระส่งคืนแคร่(\r)
และอักขระบรรทัดใหม่(\n)
ออกจากส่วนท้ายของสตริงได้อย่างไร
คำตอบ:
การดำเนินการนี้จะตัดการรวมกันของการคืนค่าขนส่งและการขึ้นบรรทัดใหม่จากจุดสิ้นสุดของs
:
s = s.TrimEnd(new char[] { '\r', '\n' });
แก้ไข : หรือตามที่ JP ชี้ให้เห็นคุณสามารถสะกดให้กระชับมากขึ้นว่า:
s = s.TrimEnd('\r', '\n');
s = s.TrimEnd()
- ตามที่เอกสารบอก: หาก trimChars เป็นโมฆะหรืออาร์เรย์ว่างอักขระ Unicode white-space จะถูกลบออกแทน - ดูString.TrimEnd
'\r'
และ'\n'
และไม่มีอะไรอื่นไม่อักขระช่องว่าง' '
เช่น
นี่น่าจะใช้ได้ ...
var tst = "12345\n\n\r\n\r\r";
var res = tst.TrimEnd( '\r', '\n' );
หากคุณใช้หลายแพลตฟอร์มคุณจะปลอดภัยกว่าเมื่อใช้วิธีนี้
value.TrimEnd(System.Environment.NewLine.ToCharArray());
มันจะอธิบายถึงอักขระขึ้นบรรทัดใหม่และการกลับรถที่ต่างกัน
tst.TrimEnd( '\r', '\n' )
- ค่อนข้าง "ปลอดภัย" ในทางปฏิบัติเนื่องจาก EOL ที่สำคัญ [ปัจจุบัน] เป็นเพียงคอมโบที่แตกต่างกันของ\r
และ\n
แต่ alexw เป็นคำตอบที่ "ถูกต้อง" ให้ CLR บอกคุณว่าตัวอักษรใดอยู่ในบรรทัดใหม่ของแพลตฟอร์มนี้ EOL ไม่ได้เป็นคอมโบของ 0D และ 0As เสมอไป
Environment.NewLine
แต่ดูเหมือนจะไม่สามารถจัดการกับอินสแตนซ์ที่\r
มีอยู่\n
ได้ TrimEnd('r','\n')
ดูเหมือนจะน่าเชื่อถือกว่าในกรณีนี้
String temp = s.Replace("\r\n","").Trim();
s
เป็นสตริงดั้งเดิม (หมายเหตุเมืองหลวง)
replace()
แล้วtrim()
ไม่เกินความTrimEnd()
สามารถเมื่อไหร่สามารถทำงานคนเดียวได้หรือฉันพลาดอะไรไป?
s.TrimEnd();
ข้างต้นคือทั้งหมดที่ฉันต้องใช้ในการลบ "\ r \ n" ออกจากส่วนท้ายของสตริง
คำตอบที่เพิ่มคะแนนดูเหมือนจะผิดสำหรับฉัน ประการแรกก็ไม่ได้ทำงานเมื่อฉันพยายามประการที่สองถ้ามันไม่ทำงานผมจะคาดหวังว่า s.TrimEnd ( '\ r', '\ n') เท่านั้นจะเอาทั้งแบบ '\ r' หรือ '\ n' ดังนั้นฉันจะต้องเรียกใช้มันบนสตริงของฉันสองครั้ง - หนึ่งครั้งเมื่อ '\ n' อยู่ที่จุดสิ้นสุดและครั้งที่สองเมื่อ '\ r' อยู่ที่จุดสิ้นสุด (ตอนนี้ '\ n' ถูกลบออก) .
หากมี CRLF เดียวเสมอ:
myString = myString.Substring(0, myString.Length - 2);
หากอาจมีหรือไม่มีให้ทำดังนี้
Regex re = new Regex("\r\n$");
re.Replace(myString, "");
ทั้งสองอย่างนี้ (ตามการออกแบบ) จะลบ CRLF ได้มากที่สุดเพียงรายการเดียว แคช regex เพื่อประสิทธิภาพ
สำหรับเรา VBers:
TrimEnd(New Char() {ControlChars.Cr, ControlChars.Lf})
string k = "This is my\r\nugly string. I want\r\nto change this. Please \r\n help!";
k = System.Text.RegularExpressions.Regex.Replace(k, @"\r\n+", " ");
มันง่ายเกินไปสำหรับฉันฉันกำลังกรองรายการอีเมลบางรายการ ฉันกำลังเขียนตัวกรองอีเมลขยะที่กำหนดเอง ด้วย \ r และ / หรือ \ n ในสตริงมันเป็นการล้างรายการทั้งหมดแทนที่จะกรอง
ดังนั้นฉันเพิ่งทำ filter = filter.Remove ('\ n') และ filter = filter.Remove ('\ r') ฉันกำลังสร้างตัวกรองของฉันเพื่อให้ผู้ใช้สามารถใช้ Notepad เพื่อแก้ไขไฟล์ได้โดยตรงดังนั้นจึงไม่มีการบอกตำแหน่งที่อักขระเหล่านี้อาจฝังตัวเอง - อาจเป็นอย่างอื่นนอกเหนือจากที่จุดเริ่มต้นหรือจุดสิ้นสุดของสตริง ดังนั้นการลบทั้งหมดก็ทำได้
รายการอื่น ๆ ใช้งานได้ทั้งหมด แต่ลบอาจจะง่ายที่สุด?
ฉันได้เรียนรู้เพิ่มเติมเกี่ยวกับ Regex จากโพสต์นี้ - งานที่ยอดเยี่ยมมากเมื่อใช้ที่นี่
filter = filter.Remove('\n').Remove('\r');
ฉันใช้ระดับการลบจำนวนมาก
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, "");
และตอนนี้เรามีหนึ่งแถวที่สะอาด
varName.replace(/[\r\n]/mg, '')
นี่คือสิ่งที่ฉันต้องทำงานให้ฉัน
s.Replace("\r","").Replace("\n","")