আমি কিভাবে সি # তে স্ট্রিংয়ের মধ্যে লাইন ব্রেকগুলি প্রতিস্থাপন করতে পারি?
আমি কিভাবে সি # তে স্ট্রিংয়ের মধ্যে লাইন ব্রেকগুলি প্রতিস্থাপন করতে পারি?
উত্তর:
সঙ্গে প্রতিস্থাপন ব্যবহার করুন Environment.NewLine
myString = myString.Replace(System.Environment.NewLine, "replacement text"); //add a line terminating ;
অন্যান্য পোস্টে উল্লিখিত হিসাবে, যদি স্ট্রিংটি অন্য পরিবেশ (ওএস) থেকে আসে তবে আপনাকে নতুন লাইন নিয়ন্ত্রণের অক্ষরগুলির নির্দিষ্ট পরিবেশের প্রয়োগটি প্রতিস্থাপন করতে হবে ।
এখনও অবধি পোস্ট করা সমাধানগুলি কেবলমাত্র প্রতিস্থাপন করুন Environment.NewLine
বা প্রতিস্থাপনের স্ট্রিংয়ে লাইন ব্রেক থাকলে তারা ব্যর্থ হয় কারণ তারা string.Replace
একাধিকবার কল করে।
এখানে একটি সমাধান যা স্ট্রিংয়ের উপরে কেবল একটি পাসে তিনটি প্রতিস্থাপনের জন্য একটি নিয়মিত অভিব্যক্তি ব্যবহার করে। এর অর্থ এই যে প্রতিস্থাপনের স্ট্রিংয়ে নিরাপদে লাইন বিরতি থাকতে পারে।
string result = Regex.Replace(input, @"\r\n?|\n", replacementString);
The.Anyi.9 এর উত্তর বাড়ানোর জন্য, আপনার সাধারণ ব্যবহারে বিভিন্ন ধরণের লাইন ব্রেক সম্পর্কে সচেতন হওয়া উচিত । আপনার ফাইলটি যেখান থেকে উত্সিত হয়েছে তার উপর নির্ভরশীল, আপনি সমস্ত বিকল্পটি ধরছেন কিনা তা নিশ্চিত করার দিকে নজর দিতে পারেন ...
string replaceWith = "";
string removedBreaks = Line.Replace("\r\n", replaceWith).Replace("\n", replaceWith).Replace("\r", replaceWith);
তোমাকে যেতে হবে ...
Line.Replace("\n", replaceWith).Replace("\r", replaceWith);
যথেষ্ট না ?
\r\n
প্রতিস্থাপনের স্ট্রিংয়ের সাথে দু'বার শেষ করবেন - আদর্শ নয়।
আমি যখন স্ট্রিংয়ের জন্য একটি নতুন লাইন toোকাতে চাইতাম তখন আমি পরিবেশ.নিউলাইনটি ব্যবহার করতাম তবে স্ট্রিং থেকে সমস্ত নিউলাইনগুলি সরিয়ে ফেলতাম না।
আপনার প্ল্যাটফর্মের উপর নির্ভর করে আপনার বিভিন্ন ধরণের নিউলাইন থাকতে পারে তবে একই প্ল্যাটফর্মের ভিতরেও প্রায়শই বিভিন্ন ধরণের নিউলাইন ব্যবহার করা হয়। বিশেষত ফাইল ফর্ম্যাট এবং প্রোটোকল নিয়ে কাজ করার সময়।
string ReplaceNewlines(string blockOfText, string replaceWith)
{
return blockOfText.Replace("\r\n", replaceWith).Replace("\n", replaceWith).Replace("\r", replaceWith);
}
যদি আপনার কোডটি বিভিন্ন পরিবেশে চলার কথা মনে হয়, তবে আমি Environment.NewLine
ধ্রুবকটি ব্যবহার করা বিবেচনা করব , কারণ এটি newline
নির্দিষ্ট পরিবেশে বিশেষত ব্যবহৃত হয়।
line = line.Replace(Environment.NewLine, "newLineReplacement");
তবে, আপনি যদি অন্য কোনও সিস্টেমে উত্পন্ন কোনও ফাইল থেকে পাঠ্যটি পান তবে এটি সঠিক উত্তর নাও হতে পারে এবং অন্য সিস্টেমে নতুন লাইন ধ্রুবকটি ব্যবহার করা উচিত তবে তা প্রতিস্থাপন করা উচিত। এটি সাধারণত হবে \n
বা \r\n
।
ভুলে যাবেন না যে প্রতিস্থাপনটি স্ট্রিংটিতে প্রতিস্থাপনটি করে না, তবে পরিবর্তিত অক্ষরগুলির সাথে একটি নতুন স্ট্রিং প্রদান করে। নিম্নলিখিতগুলি লাইন ব্রেকগুলি সরিয়ে ফেলবে (সেগুলি প্রতিস্থাপন করবে না)। আমি @ ব্রায়ান আর বন্ডির পদ্ধতিটি যদি অন্য কোনও কিছু দিয়ে প্রতিস্থাপন করে তবে সম্ভবত এটি কোনও এক্সটেনশন পদ্ধতি হিসাবে মোড়ানো থাকত use প্রতিস্থাপন বা প্রদত্ত এক্সটেনশন পদ্ধতিগুলির কল করার আগে প্রথমে নাল মানগুলি পরীক্ষা করে দেখুন।
string line = ...
line = line.Replace( "\r", "").Replace( "\n", "" );
এক্সটেনশন পদ্ধতি হিসাবে:
public static class StringExtensions
{
public static string RemoveLineBreaks( this string lines )
{
return lines.Replace( "\r", "").Replace( "\n", "" );
}
public static string ReplaceLineBreaks( this string lines, string replacement )
{
return lines.Replace( "\r\n", replacement )
.Replace( "\r", replacement )
.Replace( "\n", replacement );
}
}
''
সি # তে থাকতে পারে না - খালি চর হিসাবে কোনও জিনিস নেই। '\0'
পরিবর্তে কাজ করবে ?
string.Empty
এটির চেয়ে ভাল মনে করেন তবে তা যেকোন উপায়েই ব্যবহার করুন।
লাইন ব্রেকগুলির সমস্ত সম্ভাব্য উপায়গুলি (উইন্ডোজ, ম্যাক এবং ইউনিক্স) প্রতিস্থাপন করা হয়েছে তা নিশ্চিত করার জন্য আপনার ব্যবহার করা উচিত:
string.Replace("\r\n", "\n").Replace('\r', '\n').Replace('\n', 'replacement');
এবং এই ক্রমে, অতিরিক্ত লাইন ব্রেক না করার জন্য, যখন আপনি লাইন শেষের অক্ষরের কিছু সংমিশ্রণ পান।
আপনি যদি নতুন লাইনগুলি "পরিষ্কার" করতে চান, তবে রেগেক্স ব্যবহার করে ফ্লেমবড মন্তব্যটি @"[\r\n]+"
সেরা পছন্দ।
using System;
using System.Text.RegularExpressions;
class MainClass {
public static void Main (string[] args) {
string str = "AAA\r\nBBB\r\n\r\n\r\nCCC\r\r\rDDD\n\n\nEEE";
Console.WriteLine (str.Replace(System.Environment.NewLine, "-"));
/* Result:
AAA
-BBB
-
-
-CCC
DDD---EEE
*/
Console.WriteLine (Regex.Replace(str, @"\r\n?|\n", "-"));
// Result:
// AAA-BBB---CCC---DDD---EEE
Console.WriteLine (Regex.Replace(str, @"[\r\n]+", "-"));
// Result:
// AAA-BBB-CCC-DDD-EEE
}
}
আমার \r\n
প্রকৃত ক্যারেজ রিটার্ন এবং লাইন ফিডের \t
সাথে প্রতিস্থাপন এবং একটি প্রকৃত ট্যাব দিয়ে প্রতিস্থাপন করা দরকার । সুতরাং আমি নিম্নলিখিত নিয়ে এসেছি:
public string Transform(string data)
{
string result = data;
char cr = (char)13;
char lf = (char)10;
char tab = (char)9;
result = result.Replace("\\r", cr.ToString());
result = result.Replace("\\n", lf.ToString());
result = result.Replace("\\t", tab.ToString());
return result;
}
var answer = Regex.Replace(value, "(\n|\r)+", replacementString);
.পরিবর্তন () পদ্ধতিটি ব্যবহার করুন
Line.Replace("\n", "whatever you want to replace with");
যেহেতু নতুন লাইনটি সীমিত করা যায় \n
, \r
এবং \r\n
, প্রথমে আমরা প্রতিস্থাপন করব \r
এবং এর \r\n
সাথে করব \n
এবং তারপরেই ডাটা স্ট্রিংটি বিভক্ত করব।
নিম্নলিখিত লাইনগুলি parseCSV
পদ্ধতিতে যাওয়া উচিত :
function parseCSV(data) {
//alert(data);
//replace UNIX new lines
data = data.replace(/\r\n/g, "\n");
//replace MAC new lines
data = data.replace(/\r/g, "\n");
//split into rows
var rows = data.split("\n");
}
string s = Regex.Replace(source_string, "\n", "\r\n");
অথবা
string s = Regex.Replace(source_string, "\r\n", "\n");
আপনি কোন পথে যেতে চান তার উপর নির্ভর করে
আশা করি এটি সাহায্য করে।
অন্য বিকল্পটি হল StringReader
প্রশ্নে একটি স্ট্রিং তৈরি করা । পাঠকের উপর, .ReadLine()
একটি লুপে করুন। তারপরে আপনার লাইনগুলি পৃথক হয়ে গেছে, তাদের (সামঞ্জস্যপূর্ণ বা অসামঞ্জস্যপূর্ণ) বিভাজকগুলি যাই হোক না কেন। এটির সাথে আপনি নিজের ইচ্ছামতো এগিয়ে যেতে পারেন; একটি সম্ভাবনা হ'ল একটি ব্যবহার করা StringBuilder
এবং .AppendLine
এটিতে কল করা।
সুবিধাটি হ'ল, আপনি কাঠামোটিকে "লাইন ব্রেক" গঠনের সিদ্ধান্ত নিতে দিন।
আপনি যদি কেবল নতুনলাইনগুলি প্রতিস্থাপন করতে চান:
var input = @"sdfhlu \r\n sdkuidfs\r\ndfgdgfd";
var match = @"[\\ ]+";
var replaceWith = " ";
Console.WriteLine("input: " + input);
var x = Regex.Replace(input.Replace(@"\n", replaceWith).Replace(@"\r", replaceWith), match, replaceWith);
Console.WriteLine("output: " + x);
আপনি যদি নতুন লাইন, ট্যাব এবং সাদা স্থানগুলি প্রতিস্থাপন করতে চান:
var input = @"sdfhlusdkuidfs\r\ndfgdgfd";
var match = @"[\\s]+";
var replaceWith = "";
Console.WriteLine("input: " + input);
var x = Regex.Replace(input, match, replaceWith);
Console.WriteLine("output: " + x);