web-dev-qa-db-fra.com

Comment puis-je supprimer "\ r\n" d'une chaîne en c #? Puis-je utiliser un regEx?

J'essaie de conserver la chaîne d'un textarea ASP.NET. Je dois supprimer les sauts de ligne, puis séparer tout ce qui reste en un tableau de 50 caractères.

J'ai ceci jusqu'à présent

var commentTxt = new string[] { };
var cmtTb = GridView1.Rows[rowIndex].FindControl("txtComments") as TextBox;
if (cmtTb != null)
  commentTxt = cmtTb.Text.Length > 50
      ? new[] {cmtTb.Text.Substring(0, 50), cmtTb.Text.Substring(51)}
      : new[] {cmtTb.Text};

Cela fonctionne bien, mais je ne supprime pas les personnages de CrLf. Comment est-ce que je fais ceci correctement?

Merci, ~ Ck à San Diego

48
Hcabnettek

Vous pouvez utiliser une expression régulière, oui, mais une simple chaîne.Replace () suffira probablement.

 myString = myString.Replace("\r\n", string.Empty);
96
Matt Greer

La fonction .Trim () fera tout le travail pour vous! 

J'essayais le code ci-dessus mais après la fonction "trim", et j'ai remarqué que tout était "propre" avant même qu'il n'atteigne le code de remplacement!

String input:       "This is an example string.\r\n\r\n"
Trim method result: "This is an example string."

Source: http://www.dotnetperls.com/trim

39
dimazaid

Cela divise la chaîne de n'importe quelle combinaison de caractères de nouvelle ligne et les joint avec un espace, en supposant que vous souhaitiez réellement l'espace où les nouvelles lignes auraient été.

var oldString = "the quick brown\rfox jumped over\nthe box\r\nand landed on some rocks.";
var newString = string.Join(" ", Regex.Split(oldString, @"(?:\r\n|\n|\r)"));
Console.Write(newString);

// prints:
// the quick brown fox jumped over the box and landed on some rocks.
19
Chris

Code plus gentil pour ceci:

yourstring = yourstring.Replace(System.Environment.NewLine, string.Empty);
18
alonp

Essaye ça:

private void txtEntry_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            string trimText;

            trimText = this.txtEntry.Text.Replace("\r\n", "").ToString();
            this.txtEntry.Text = trimText;
            btnEnter.PerformClick();
        }
    }
2
Fred Conklin

En supposant que vous souhaitiez remplacer les nouvelles lignes par quelque chose pour que quelque chose comme ceci:

the quick brown fox\r\n
jumped over the lazy dog\r\n

ne finit pas comme ça:

the quick brown foxjumped over the lazy dog

Je ferais quelque chose comme ça:

string[] SplitIntoChunks(string text, int size)
{
    string[] chunk = new string[(text.Length / size) + 1];
    int chunkIdx = 0;
    for (int offset = 0; offset < text.Length; offset += size)
    {
        chunk[chunkIdx++] = text.Substring(offset, size);
    }
    return chunk;
}    

string[] GetComments()
{
    var cmtTb = GridView1.Rows[rowIndex].FindControl("txtComments") as TextBox; 
    if (cmtTb == null)
    {
        return new string[] {};
    }

    // I assume you don't want to run the text of the two lines together?
    var text = cmtTb.Text.Replace(Environment.Newline, " ");
    return SplitIntoChunks(text, 50);    
}

Je m'excuse si la syntaxe n'est pas parfaite; Je ne suis pas sur une machine avec C # disponible pour le moment.

1
Matt McClellan

Voici la méthode parfaite

Veuillez noter que Environment.NewLine fonctionne sur les plates-formes Microsoft

En plus de ce qui précède, vous devez ajouter\r et\n dans une séparer fonction!

Voici le code qui vous aidera si vous tapez sur Linux, Windows ou Mac

            var stringTest = "\r Test\nThe Quick\r\n brown fox";
            Console.WriteLine("Original is:");
            Console.WriteLine(stringTest);
            Console.WriteLine("-------------");
            stringTest = stringTest.Trim().Replace("\r", string.Empty);
            stringTest = stringTest.Trim().Replace("\n", string.Empty);
            stringTest = stringTest.Replace(Environment.NewLine, string.Empty);
            Console.WriteLine("Output is : ");
            Console.WriteLine(stringTest);
            Console.ReadLine();
1
vibs2006

var result = JObject.Parse (json.Replace (System.Environment.NewLine, string.Empty));

0
Ramya Prakash Rout