Retour chariot et saut de Ligne... Sont à la fois nécessaires en C#?
Lors de l'insertion d'une nouvelle ligne de caractère dans une chaîne, j'ai fait habituellement ce:
str = "First line\nSecond line";
En C#, est-ce la norme? Dois-je également inclure le 'retour chariot' caractère '\r'? Il y a aucune différence entre les suivantes, et si oui, quels sont-ils?
str = "First line\nSecond line";
str = "First line\r\nSecond line";
Si vous utilisez les deux "retour chariot" et "saut de ligne" est la norme de la pratique, est-il une commande spécifique et pourquoi?
Remarque: j'ai lu quelques posts sur DONC, mais n'a pas trouver une réponse spécifique .NET/C#.
Edit: Après avoir testé un peu d'application, je ne vois pas la différence entre '\n' et '\n\r' ou '\r\n'.
- Voyez vous-même: Écrire une application console en C# et de sortie des chaînes de voir ce qui se passe. Globalement, je dirais que cela a moins à voir avec le C# et plus à voir avec Windows.
- quelles plates-formes, avez-vous tester sur? Windows? Mac? Linux? Mobile?
- Je travaille sur Windows, donc peut-être qui pourrait expliquer qu'il soit. Pour être honnête, cette question était surtout d'essayer de trouver les raisons et quelles sont les meilleures pratiques. Il semble que dans .NET je dois toujours utiliser de l'Environnement.De retour à la ligne constante.
- Cela dépend de ce que vous comptez faire avec la chaîne. Si, par exemple, votre chaîne de caractères représente une adresse e-mail, puis il doit se terminer par un CR suivie par un LF. Pourquoi? C'est la façon dont les specs de définir la terminaison d'un en-tête.
Vous devez vous connecter pour publier un commentaire.
System.Environment.NewLine
est la constante que vous êtes à la recherche pour - http://msdn.microsoft.com/en-us/library/system.environment.newline.aspx qui permettra de fournir de l'environnement combinaison spécifique que la plupart des programmes sur les OS considère comme "la prochaine ligne de texte".Dans la pratique, la plupart des outils de texte à traiter toutes les variations qui incluent
\n
comme "nouvelle ligne" et vous pouvez simplement utiliser dans votre texte"foo\nbar"
. Surtout si vous essayez de construire multi-ligne format des chaînes de caractères comme$"V1 = {value1}\nV2 = {value2}\n"
. Si vous êtes à la construction du texte avec la concaténation de chaîne d'envisager l'utilisationNewLine
. En tout cas, assurez-vous que les outils de vous utilisez comprendre la sortie de la manière que vous voulez et vous pourriez avoir besoin par exemple de toujours utiliser\r\n
indépendamment de la plate-forme si l'éditeur de votre choix ne peut pas ouvrir correctement les fichiers autrement.Noter que
WriteLine
utilisation de méthodesNewLine
donc, si vous envisagez d'écrire un texte avec une de ces méthodes éviter d'utiliser juste\n
comme résultant de texte peut contenir mélange de\r\n
et juste\n
qui peut perturber certains outils et n'a absolument pas l'air soigné.Pour un contexte historique voir Différence entre les \n et \r?
Environment.Newline
est une constante pour l'ensemble de l'exécutable (voir msdn). Pouvez-vous fournir un lien qui explique comment la valeur est basée sur le contexte?Un retour chariot
\r
déplace le curseur au début de la ligne courante. Un retour à la ligne\n
provoque une baisse à la ligne suivante et éventuellement le début de la ligne suivante; C'est la plate-forme dépendant de la partie qui Alexei notes ci-dessus (sur un *nix système\n
vous donne un retour chariot et un saut de ligne, sous windows, il n'est pas)Ce que vous utilisez dépend de ce que vous essayez de faire. Si je voulais faire un peu de filature de la chose, sur une console, je ne
str = "|\r/\r-\r\\\r";
par exemple.Cela dépend d'où vous êtes à l'affichage du texte. Sur la console ou dans une zone de texte par exemple, \n suffira. Sur un RichTextBox je pense que vous devez à la fois.
Je sais que c'est un peu vieux, mais pour quiconque de tomber sur cette page devraient savoir qu'il existe une différence entre les \n et \r\n.
L' \r\n donne un CRLF à la fin de la ligne et le \n donne un LF caractère de fin de ligne. Il y a très peu de différence à l'oeil en général.
Créer un .txt de la corde, et puis essayer de l'ouvrir dans le bloc-notes (normal, pas de notepad++) et vous remarquerez la différence
Ci-dessus à l'aide de "CRLF" et voici ce que LF seulement " pourrait ressembler (Il y a un personnage qui ne peut pas être vu, où la LF montre).
Si la Ligne se Termine doivent être corrigées et le fichier est assez petite taille, vous pouvez modifier les fins de ligne dans NotePad++ (ou coller dans word puis de nouveau dans le bloc-notes - bien que cela va faire CRLF seulement).
Cela peut entraîner certaines fonctions de lecture de ces fichiers, potenitially ne plus fonctionner (L'exemple des lignes de données sont de GP Prescrire les données de l'Angleterre. Le fichier a été modifié à partir d'un CRLF fin de Ligne pour un LF de fin de ligne). Cet arrêté un travail SSIS de la course et a échoué comme il ne pouvait pas lire la LF fins de ligne.
Source de Fin de Ligne de l'Information:
https://en.wikipedia.org/wiki/Newline#Representations_in_different_character_encoding_specifications
Espère que cela aide quelqu'un dans le futur 🙂 CRLF = Windows, LF ou les FC sont d'Unix (Linux, MacOS, etc.)