मैं सी # में एक स्ट्रिंग के भीतर लाइन ब्रेक कैसे बदल सकता हूं?
मैं सी # में एक स्ट्रिंग के भीतर लाइन ब्रेक कैसे बदल सकता हूं?
जवाबों:
के साथ बदलें का उपयोग करें Environment.NewLine
myString = myString.Replace(System.Environment.NewLine, "replacement text"); //add a line terminating ;
जैसा कि अन्य पोस्ट में उल्लेख किया गया है, यदि स्ट्रिंग दूसरे वातावरण (OS) से आती है, तो आपको नए लाइन नियंत्रण वर्णों के उस विशेष वातावरण को लागू करने की आवश्यकता होगी ।
अब तक पोस्ट किए गए समाधान या तो केवल प्रतिस्थापित 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
आप दो बार प्रतिस्थापन स्ट्रिंग के साथ समाप्त हो जाएंगे - आदर्श नहीं।
मैं एनवायरनमेंट का उपयोग करता हूँ। जब मैं एक स्ट्रिंग के लिए एक नई लाइन सम्मिलित करना चाहता था, लेकिन एक स्ट्रिंग से सभी न्यूलाइन्स को हटाने के लिए नहीं।
आपके प्लेटफ़ॉर्म के आधार पर आपके पास अलग-अलग प्रकार की नई सुर्खियाँ हो सकती हैं, लेकिन यहाँ तक कि एक ही मंच के भीतर अक्सर विभिन्न प्रकार की नई-नई सूचियों का उपयोग किया जाता है। विशेष रूप से फ़ाइल स्वरूपों और प्रोटोकॉल के साथ काम करते समय।
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
।
यह मत भूलो कि प्रतिस्थापन स्ट्रिंग में प्रतिस्थापन नहीं करता है, लेकिन प्रतिस्थापित पात्रों के साथ एक नया स्ट्रिंग लौटाता है। निम्नलिखित लाइन ब्रेक को हटा देगा (उन्हें प्रतिस्थापित नहीं करेगा)। मैं @ ब्रायन आर। बॉन्डी की विधि का उपयोग करता, अगर उन्हें किसी और चीज़ से बदल दिया जाता, तो शायद एक विस्तार विधि के रूप में लिपटा जाता। कॉल करने से पहले सबसे पहले अशक्त मानों की जांच करना या प्रदान की गई विस्तार विधियों को याद रखें।
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 );
}
}
''
C # में नहीं हो सकता - खाली चार जैसी कोई चीज नहीं है। '\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;
}
.Replace () विधि का उपयोग करें
Line.Replace("\n", "whatever you want to replace with");
लाइनब्रेक को सुरक्षित रूप से बदलने का सबसे अच्छा तरीका है
yourString.Replace("\r\n","\n") //handling windows linebreaks
.Replace("\r","\n") //handling mac linebreaks
कि लाइनब्रेक के रूप में only \ n (जैसे लाइनफीड) के साथ एक स्ट्रिंग का उत्पादन करना चाहिए। यह कोड मिश्रित लाइनब्रेक को भी ठीक करने के लिए उपयोगी है।
के रूप में नई लाइन द्वारा सीमांकित किया जा सकता है \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);