web-dev-qa-db-fra.com

Ajout d'une nouvelle ligne dans une chaîne en C #

J'ai une ficelle.

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

J'ai besoin d'ajouter une nouvelle ligne après chaque occurrence du symbole "@" dans la chaîne.

Ma sortie devrait être comme ça

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

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

Vous pouvez ajouter un nouveau caractère après le symbole @ comme suit:

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

Vous pouvez également utiliser la propriété NewLine dans la classe Environment (je pense que c'est Environment).

65
Jason

Les réponses précédentes se rapprochent, mais pour répondre à l'exigence réelle selon laquelle le symbole @ reste proche, vous souhaitez qu'il soit str.Replace("@", "@" + System.Environment.NewLine). Cela conserve le symbole @ et ajoute le ou les caractères de nouvelle ligne appropriés pour la plate-forme actuelle.

18
Marcus Griep

Ensuite, modifiez simplement les réponses précédentes en:

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

Si vous ne voulez pas de nouvelles lignes dans le fichier texte, ne le conservez pas.

9
Benjamin Autin

comme d'autres l'ont dit, new line char vous donnera une nouvelle ligne dans un fichier texte dans Windows. essayez ce qui suit:

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);
        }
    }
}
6
Hath

Un simple remplacement de chaîne fera le travail. Jetez un coup d'œil à l'exemple de programme ci-dessous:

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
Jason Jackson

D'après vos réponses à tous les autres, vous recherchez quelque chose comme cela.

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 + "@");
    }
}
3
Timothy Carter
string str = "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@";
str = str.Replace("@", Environment.NewLine);
richTextBox1.Text = str;
2
Glinas
string strToProcess = "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@";
var result = strToProcess.Replace("@", "@ \r\n");
Console.WriteLine(result);

sortie

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

Vous pouvez également utiliser string[] something = text.Split('@'). Assurez-vous d’utiliser des guillemets simples pour entourer le "@" afin de le stocker en tant que type char. Ceci stockera les caractères jusqu'à et y compris chaque "@" en tant que mots individuels dans le tableau. Vous pouvez ensuite générer chaque (element + System.Environment.NewLine) à l'aide d'une boucle for ou l'écrire dans un fichier texte à l'aide de System.IO.File.WriteAllLines([file path + name and extension], [array name]). Si le fichier spécifié n'existe pas à cet emplacement, il sera automatiquement créé.

0
TehSpowage
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);
    }
}
0
FAREH