सी # में स्ट्रिंग के अंत से कैरिज रिटर्न और नई-लाइन निकालना


113

मैं एक स्ट्रिंग के अंत से कैरिज रिटर्न कैरेक्टर (\r)और नई लाइन कैरेक्टर (\n)को कैसे निकालूं ?

जवाबों:


198

यह गाड़ी के रिटर्न और नईलाइंस के किसी भी संयोजन को समाप्त कर देगा s:

s = s.TrimEnd(new char[] { '\r', '\n' });

संपादित करें : या जेपी के रूप में कृपया बताते हैं, आप इस रूप में अधिक संक्षिप्त रूप से जादू कर सकते हैं:

s = s.TrimEnd('\r', '\n');

10
ट्राइएंड की घोषणा में परमस कीवर्ड पर ध्यान दें, तो आइए आपको ऐरे के बजाय एक वर्ण के कई उदाहरणों को पास करते हैं। msdn.microsoft.com/en-us/library/w5zay9db(VS.71).aspx
JP Alioto

3
इसके बारे में कैसे: s = s.TrimEnd (System.Environment.NewLine.ToCharArray ());
12 Г И О И О

4
मैं c # लिख रहा हूँ क्योंकि v1.0 बाहर आया था (10 साल पहले)। अब आप मुझे TrimEnd के बारे में बताएं। रवींद्र!
s15199d 20

7
बस ब्याज से बाहर, आपको वास्तव में ज़रूरत है s = s.TrimEnd()- जैसा कि डॉक्स कहते हैं: यदि ट्रिमचर्स शून्य या खाली सरणी है, तो इसके बजाय यूनिकोड व्हाइट-स्पेस वर्ण हटा दिए जाते हैं। - स्ट्रिंग
स्टुअर्ट वुड

@StuartWood: ... वो नहीं जो अविक ने मांगा था। उन्होंने विशेष रूप से '\r'और '\n'कुछ नहीं के लिए कहा , ' 'उदाहरण के लिए अंतरिक्ष चरित्र नहीं ।
रिचीहिंडले


19

यदि आप कई प्लेटफार्मों का उपयोग कर रहे हैं तो आप इस पद्धति का उपयोग करके सुरक्षित हैं।

value.TrimEnd(System.Environment.NewLine.ToCharArray());

इसमें अलग-अलग न्यूलाइन और कैरिज-रिटर्न कैरेक्टर होंगे।


जेपी की विधि - tst.TrimEnd( '\r', '\n' )- यथोचित रूप से "सुरक्षित" है क्योंकि प्रमुख ईओएल हैं [वर्तमान में] बस अलग-अलग कंघी \rऔर \n, लेकिन एलेक्सव का "सही" जवाब है। CLR आपको बताता है कि इस प्लेटफॉर्म की न्यूलाइन में कौन से चार्ट हैं। EOL हमेशा 0Ds और 0As का कॉम्बो नहीं किया गया है
Ruffin

मैं उपयोग Environment.NewLineकरता था, लेकिन यह ऐसे उदाहरणों को संभालने के लिए नहीं लगता \rथा, जहां मौजूद नहीं था \nTrimEnd('r','\n')इस मामले में अधिक विश्वसनीय लगता है।
ᴍᴀᴛᴛ

2
यह हो सकता है कि यह वास्तव में एक क्रॉस-प्लेटफ़ॉर्म मुद्दा है, और डिक को विशेष रूप से दोनों \ n \ n को हटाने की आवश्यकता है, भले ही सिस्टम पर्यावरण क्या कहता है।
एंड्रयू हिल

12
String temp = s.Replace("\r\n","").Trim();

sमूल तार होना। (नोट राजधानियाँ)


11
यह भी होगा: 1) स्ट्रिंग के बीच से निकालें \ r \ n, 2) स्ट्रिंग की शुरुआत से किसी भी व्हाट्सएप पात्रों को हटा दें, और 3) स्ट्रिंग के अंत से किसी भी व्हाट्सएप वर्ण को हटा दें।
रिचीहिंडल

सच है, मैंने अंत में केवल एक / आर / एन ग्रहण किया। यह मूल पद में उल्लिखित नहीं था। मुझे यकीन नहीं है कि एक -1 वोट को
चेतावनी देता है

ठीक वही जो मेरे द्वारा खोजा जा रहा था। धन्यवाद।
NotMe

4
उपयोग कर रहा है replace()तब trim()ओवरकिल नहीं है जब TrimEnd()काम अकेले कर सकता है, या क्या मैं कुछ याद कर रहा हूं?
ᴍᴀᴛᴛ

महान सुझाव @MattBaker
Crash893

8
s.TrimEnd();

उपरोक्त सभी को अपनी स्ट्रिंग के अंत से '\ r \ n' निकालने की आवश्यकता है।

उलटा जवाब मुझे गलत लगता है। सबसे पहले, यह तब काम नहीं करता था जब मैंने कोशिश की थी, दूसरी बात, अगर यह काम करता है तो मुझे उम्मीद है कि s.TrimEnd ('\ r', '\ n') केवल या तो '\ r' या '\ n' को हटा देगा , इसलिए मुझे इसे अपने स्ट्रिंग पर दो बार चलाना होगा - एक बार जब '\ n' अंत में था और दूसरी बार जब '\ r' अंत में था (अब '\ n' हटा दिया गया था) ।


4

यदि हमेशा एक ही CRLF होता है, तो:

myString = myString.Substring(0, myString.Length - 2);

यदि यह हो सकता है या नहीं, तो:

Regex re = new Regex("\r\n$");
re.Replace(myString, "");

ये दोनों (डिज़ाइन के अनुसार), अधिकांश एकल CRLF को हटा देंगे। प्रदर्शन के लिए regex कैश करें।



3
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+", " ");

3

यह बहुत आसान था - मेरे लिए मैं कुछ ईमेल आइटम फ़िल्टर कर रहा हूं। मैं अपना खुद का कस्टम ईमेल जंक फिल्टर लिख रहा हूं। स्ट्रिंग में \ r और / या \ n के साथ यह फ़िल्टरिंग के बजाय सभी आइटम मिटा रहा था।

तो, मैंने सिर्फ फ़िल्टर = फ़िल्टर किया। Rove ('\ n') और फ़िल्टर = filter .emove ('\ r')। मैं अपना फ़िल्टर ऐसा बना रहा हूं कि एक अंतिम उपयोगकर्ता नोटपैड का उपयोग सीधे फाइल को संपादित करने के लिए कर सकता है, इसलिए कोई भी यह नहीं बता रहा है कि ये वर्ण खुद को कहां एम्बेड कर सकते हैं - स्ट्रिंग के शुरू या अंत में अन्य हो सकता है। इसलिए इन सबको हटाकर वह ऐसा करता है।

अन्य प्रविष्टियाँ सभी काम करती हैं लेकिन निकालें सबसे आसान हो सकती हैं?

मैंने इस पोस्ट से रेगेक्स के बारे में बहुत कुछ सीखा - यहां इसके उपयोग के साथ बहुत अच्छा काम।


लगता है कि आप बस कर सकते हैंfilter = filter.Remove('\n').Remove('\r');
जॉन Saunders

2

मैं मिटाने के स्तर का बहुत उपयोग करता हूं

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, "");

और अब हमारे पास एक साफ पंक्ति है



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.