C # में एक स्ट्रिंग में एक नई रेखा जोड़ना


230

मेरे पास एक तार है।

string strToProcess = "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@";

मुझे स्ट्रिंग में "@" प्रतीक की प्रत्येक घटना के बाद एक नई पंक्ति जोड़ने की आवश्यकता है।

मेरा आउटपुट इस तरह होना चाहिए

fkdfdsfdflkdkfk@
dfsdfjk72388389@
kdkfkdfkkl@
jkdjkfjd@
jjjk@

2
"न्यूलाइन पाठ फ़ाइल में प्रभावी नहीं है" से आपका क्या अभिप्राय है? आप पाठ फ़ाइल में कैसे लिख रहे हैं?
मार्क सिडेड

5
फ़ाइल को लिखने के लिए आप जिस कोड का उपयोग करते हैं उसे पोस्ट करें। \ r \ n (विंडोज़ - एनवायरनमेंट.न्यूलाइन) या \ n (यूनिक्स) को काम करना चाहिए ...
गिशु

जवाबों:


482

Environment.NewLineजब भी आप किसी भी स्ट्रिंग में चाहते हैं का उपयोग करें । एक उदाहरण:

string text = "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@";

text = text.Replace("@", "@" + System.Environment.NewLine);

1
लेकिन मुझे इस जानकारी को एक पाठ फ़ाइल में इस तरह लिखना होगा जैसे कि fkdfdsfdflkdkfk @ dfsdfjk72388389 @ kdkfkdfkkl @ jkdjkfjd @ jjjk @ नई लाइन का चरित्र पाठ फ़ाइल में प्रभावी नहीं है।
बालवबेलॉग

यह एक अच्छा समाधान नहीं है, क्योंकि System.String (उपनाम string) एक अपरिवर्तनीय वस्तु है, जिसका अर्थ है कि पूरे स्ट्रिंग को कॉपी किया जा रहा है। String.Replace जैसे ऑपरेशन के लिए System.Text.StringBuilder ऑब्जेक्ट का उपयोग करने के लिए बेहतर है।
ワ き ん

@Alexander मैं कहना चाहता हूँ कि स्ट्रिंग आपरेशन अक्षम किया जा रहा है एक समस्या है हम 2019 में चिंता करने की जरूरत नहीं है
फिलिपे Madureira

2
@FilipeMadureira इतने तरीकों से गलत है। हार्डवेयर में सुधार होता है या नहीं, उद्देश्य पर खराब प्रोग्रामर होने का कोई बहाना कभी नहीं होता है। अगर हम जानते हैं कि हमें इसे बेहतर कैसे करना चाहिए। डेटाबेस प्रणाली में एक मुख्य विशेषता में उपयोग की जा रही लाइब्रेरी में इसे लागू करने की कल्पना के अलावा - आप उच्च प्रदर्शन चाहते हैं।
ワ き ん ワ

@Alexander एक अच्छा प्रोग्रामर होने के नाते एक लक्जरी केवल वे लोग हैं, जिन्होंने समय सीमा / बुरा काम / बॉस नहीं किया है, अन्यथा, मैं आपसे सहमत होता। मुझे लगा कि मेरी बात पहले स्पष्ट थी।
मडुरैरा

70

आप @ प्रतीक के बाद एक नई पंक्ति वर्ण जोड़ सकते हैं:

string newString = oldString.Replace("@", "@\n");  

आप NewLineसंपत्ति का उपयोग Environmentकक्षा में भी कर सकते हैं (मुझे लगता है कि यह पर्यावरण है)।


1
लेकिन मुझे इस जानकारी को एक पाठ फ़ाइल में इस तरह लिखना होगा जैसे कि fkdfdsfdflkdkfk @ dfsdfjk72388389 @ kdkfkdfkkl @ jkdjkfjd @ jjjk @ नई लाइन का चरित्र पाठ फ़ाइल में प्रभावी नहीं है।
बालवबेलॉग

18

पिछले उत्तर करीब आते हैं, लेकिन वास्तविक आवश्यकता को पूरा करने के लिए कि @प्रतीक करीब रहता है, आप चाहते हैं कि ऐसा हो str.Replace("@", "@" + System.Environment.NewLine)। यह @प्रतीक रखेगा और वर्तमान प्लेटफ़ॉर्म के लिए उपयुक्त न्यूलाइन वर्ण (ओं) को जोड़ेगा।


9

तो बस पिछले उत्तरों को संशोधित करें:

Console.Write(strToProcess.Replace("@", "@" + Environment.NewLine));

यदि आप टेक्स्ट फ़ाइल में नए अंक नहीं चाहते हैं, तो इसे संरक्षित न करें।


6

एक साधारण स्ट्रिंग रिप्लेसमेंट जॉब करेगा। नीचे दिए गए उदाहरण कार्यक्रम पर एक नज़र डालें:

using System;

namespace NewLineThingy
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@";
            str = str.Replace("@", "@" + Environment.NewLine);
            Console.WriteLine(str);
            Console.ReadKey();
        }
    }
}

6

जैसा कि दूसरों ने कहा है कि नई लाइन चार आपको खिड़कियों में एक पाठ फ़ाइल में एक नई लाइन देगी। निम्नलिखित प्रयास करें:

using System;
using System.IO;

static class Program
{
    static void Main()
    {
        WriteToFile
        (
        @"C:\test.txt",
        "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@",
        "@"
        );

        /*
        output in test.txt in windows =
        fkdfdsfdflkdkfk@
        dfsdfjk72388389@
        kdkfkdfkkl@
        jkdjkfjd@
        jjjk@ 
        */
    }

    public static void WriteToFile(string filename, string text, string newLineDelim)
    {
        bool equal = Environment.NewLine == "\r\n";

        //Environment.NewLine == \r\n = True
        Console.WriteLine("Environment.NewLine == \\r\\n = {0}", equal);

        //replace newLineDelim with newLineDelim + a new line
        //trim to get rid of any new lines chars at the end of the file
        string filetext = text.Replace(newLineDelim, newLineDelim + Environment.NewLine).Trim();

        using (StreamWriter sw = new StreamWriter(File.OpenWrite(filename)))
        {
            sw.Write(filetext);
        }
    }
}

केवल आपके पर्यावरण को देखा। newline == \ r \ n = अब सच है (शायद मैंने इसे याद किया क्योंकि यह सी # वाक्यविन्यास नहीं है;)। इसके अलावा, अधिक जानकारी यहाँ msdn.microsoft.com/de-de/library/… । हार्डकॉटेड \ n का उपयोग करने के साथ बस इसी तरह की समस्या पर ठोकर खाई है, मुझे खिड़कियों में एक नई लाइन नहीं दे रहा है ..
एंड्रियास रीफ

3

आपके जवाबों के आधार पर बाकी सभी के लिए, कुछ इस तरह से आप के लिए देख रहे हैं।

string file = @"C:\file.txt";
string strToProcess = "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@";
string[] lines = strToProcess.Split(new char[] { '@' }, StringSplitOptions.RemoveEmptyEntries);

using (StreamWriter writer = new StreamWriter(file))
{
    foreach (string line in lines)
    {
        writer.WriteLine(line + "@");
    }
}

2
string str = "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@";
str = str.Replace("@", Environment.NewLine);
richTextBox1.Text = str;

2
string strToProcess = "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@";
var result = strToProcess.Replace("@", "@ \r\n");
Console.WriteLine(result);

उत्पादन


2
हालांकि यह कोड प्रश्न का उत्तर दे सकता है, लेकिन यह कोड क्यों और / या इस प्रश्न के उत्तर के बारे में अतिरिक्त संदर्भ प्रदान करता है, इसके दीर्घकालिक मूल्य में सुधार करता है।
थॉमस फ्लिन्को

0

आप भी इस्तेमाल कर सकते हैं string[] something = text.Split('@')। सुनिश्चित करें कि आप "@" को एक charप्रकार के रूप में संग्रहीत करने के लिए सिंगल कोट्स का उपयोग करते हैं । यह सरणी में प्रत्येक "@" अक्षर को अलग-अलग शब्दों के रूप में शामिल करेगा। फिर आप प्रत्येक ( element + System.Environment.NewLine) लूप के लिए आउटपुट का उपयोग कर सकते हैं या इसका उपयोग करके टेक्स्ट फ़ाइल में लिख सकते हैं System.IO.File.WriteAllLines([file path + name and extension], [array name])। यदि निर्दिष्ट फ़ाइल उस स्थान पर मौजूद नहीं है, तो यह स्वचालित रूप से बनाया जाएगा।


0
protected void Button1_Click(object sender, EventArgs e)
{
    string str = "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@";
    str = str.Replace("@", "@" + "<br/>");
    Response.Write(str);       
}

1
एसओ समुदाय में आपका स्वागत है। सवाल का जवाब देने के लिए धन्यवाद। हालांकि यह क्यों काम करता है के रूप में कुछ स्पष्टीकरण जोड़ने के लिए अच्छा अभ्यास है।
फ़ूजी

0
using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
             string strToProcess = "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@";
            strToProcess.Replace("@", Environment.NewLine);
            Console.WriteLine(strToProcess);
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.