উত্তর:
আমি নিয়মিত ভাব প্রকাশ করতে পছন্দ করি। এই ক্ষেত্রে আপনি করতে পারেন:
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, "");
তথ্যসূত্র:
এমএসডিএন স্ট্রিং.পরিবর্তন পদ্ধতি এবং এমএসডিএন এনভায়রনমেন্ট e নিউলাইন সম্পত্তি
গতি এবং কম স্মৃতির ব্যবহার যদি গুরুত্বপূর্ণ হয় তবে এর মতো কিছু করুন:
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);
একটি লিনকিউ পদ্ধতির:
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]
তবে আমি সচেতন যে আপনি। নেট ব্যবহার করেন। সুতরাং প্রতিটি উল্লম্ব স্থান প্রতিস্থাপন আমার উত্তর হল ..
string replacement = Regex.Replace(s, @"[\n\u000B\u000C\r\u0085\u2028\u2029]", "");
আপনি Trimশুরু এবং শেষ থেকে অপসারণ করতে চাইলে আপনি ব্যবহার করতে পারেন ।
string stringWithoutNewLine = "\n\nHello\n\n".Trim();
অবগতির জন্য,
ট্রিম () এটি ইতিমধ্যে করে।
নিম্নলিখিত লিংকপ্যাড নমুনা:
void Main()
{
var s = " \rsdsdsdsd\nsadasdasd\r\n ";
s.Length.Dump();
s.Trim().Length.Dump();
}
আউটপুট:
23
18