जवाबों:
मुझे नियमित अभिव्यक्ति का उपयोग करना पसंद है। इस मामले में आप कर सकते हैं:
string replacement = Regex.Replace(s, @"\t|\n|\r", "");
.NET दुनिया में नियमित अभिव्यक्ति उतनी लोकप्रिय नहीं हैं जितनी कि वे गतिशील भाषाओं में हैं, लेकिन वे तार को हेरफेर करने के लिए बहुत शक्ति प्रदान करते हैं।
आप String.Replaceएक चरित्र को हटाने के लिए उपयोग करना चाहते हैं ।
s = s.Replace("\n", String.Empty);
s = s.Replace("\r", String.Empty);
s = s.Replace("\t", String.Empty);
ध्यान दें कि String.Trim(params char[] trimChars)केवल प्रमुख और अनुगामी वर्णों को trimCharsहटाए गए उदाहरण से हटा दिया जाता है।
आप एक विस्तार विधि बना सकते हैं, जो बहुत सारे अस्थायी तार बनाने के ऊपर की प्रदर्शन समस्याओं से बचाती है:
static string RemoveChars(this string s, params char[] removeChars) {
Contract.Requires<ArgumentNullException>(s != null);
Contract.Requires<ArgumentNullException>(removeChars != null);
var sb = new StringBuilder(s.Length);
foreach(char c in s) {
if(!removeChars.Contains(c)) {
sb.Append(c);
}
}
return sb.ToString();
}
मुझे पता है कि यह एक पुरानी पोस्ट है, हालांकि मैंने सोचा था कि मैं नई लाइन वर्णों को निकालने के लिए उपयोग की जाने वाली विधि साझा करूंगा।
s.Replace(Environment.NewLine, "");
संदर्भ:
यदि गति और कम मेमोरी उपयोग महत्वपूर्ण हैं, तो कुछ इस तरह करें:
var sb = new StringBuilder(s.Length);
foreach (char i in s)
if (i != '\n' && i != '\r' && i != '\t')
sb.Append(i);
s = sb.ToString();
बस ऐसा करो
s = s.Replace("\n", String.Empty).Replace("\t", String.Empty).Replace("\r", String.Empty);
एक LINQ दृष्टिकोण:
string s = "This is a Test String.\n This is a next line.\t This is a tab.\n'";
string s1 = String.Join("", s.Where(c => c != '\n' && c != '\r' && c != '\t'));
string.Joinकॉल करेगा । बेहतर होगा कि कंस्ट्रक्टर को केवल क्वेरी परिणाम दें । ToStringcharstrings1 = new string(s.Where(....).ToArrary());
सही विकल्प वास्तव में इस बात पर निर्भर करता है कि इनपुट स्ट्रिंग कितनी बड़ी है और पेरफोर्स और मेमोरी की आवश्यकता क्या है, लेकिन मैं एक नियमित अभिव्यक्ति का उपयोग करूंगा जैसे
string result = Regex.Replace(s, @"\r\n?|\n|\t", String.Empty);
या अगर हमें एक ही प्रतिस्थापन को कई बार लागू करने की आवश्यकता है, तो रेगेक्स जैसे संकलित संस्करण का उपयोग करना बेहतर है
var regex = new Regex(@"\r\n?|\n|\t", RegexOptions.Compiled);
string result = regex.Replace(s, String.Empty);
नोट: विभिन्न परिदृश्यों को सर्वश्रेष्ठ प्रदर्शन और न्यूनतम मेमोरी खपत प्राप्त करने के लिए अलग-अलग तरीकों की आवश्यकता होती है
खैर ... मैं चाहूंगा कि आप अंतरिक्ष के अधिक विशिष्ट क्षेत्रों को समझें। \tवास्तव में एक क्षैतिज स्थान के रूप में है, न कि एक ऊर्ध्वाधर स्थान। ( \tनोटपैड में डालने का परीक्षण )
यदि आप जावा का उपयोग करते हैं, तो बस उपयोग करें \v। नीचे संदर्भ देखें।
\h- एक क्षैतिज व्हाट्सएप चरित्र:
[\t\xA0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000]
\v- एक ऊर्ध्वाधर व्हाट्सएप चरित्र:
[\n\x0B\f\r\x85\u2028\u2029]
लेकिन मुझे पता है कि आप .NET का उपयोग करते हैं। तो हर ऊर्ध्वाधर जगह की जगह मेरा जवाब है ..
string replacement = Regex.Replace(s, @"[\n\u000B\u000C\r\u0085\u2028\u2029]", "");
Trimयदि आप प्रारंभ और समाप्ति से हटाना चाहते हैं, तो आप उपयोग कर सकते हैं ।
string stringWithoutNewLine = "\n\nHello\n\n".Trim();
FYI करें,
ट्रिम () पहले से ही ऐसा करता है।
निम्नलिखित LINQPad नमूना:
void Main()
{
var s = " \rsdsdsdsd\nsadasdasd\r\n ";
s.Length.Dump();
s.Trim().Length.Dump();
}
आउटपुट:
23
18