Dans .NET, je peux fournir les deux \r
ou des \n
chaînes littérales, mais il existe un moyen d'insérer quelque chose comme un caractère spécial "nouvelle ligne" comme Environment.NewLine
une propriété statique?
c#
.net
line-breaks
Capitaine Comic
la source
la source
Réponses:
Eh bien, les options simples sont:
string.Format
:Concaténation de chaînes:
Interpolation de chaîne (en C # 6 et supérieur):
Vous pouvez également utiliser \ n partout et remplacer:
Notez que vous ne pouvez pas en faire une constante de chaîne , car la valeur de
Environment.NewLine
ne sera disponible qu'au moment de l'exécution.la source
Environment.NewLine
? Bien au contraire, c'est une bonne pratique de l'utiliserSi vous voulez une chaîne const qui contient Environment.NewLine, vous pouvez faire quelque chose comme ceci:
ÉDITER
Puisque c'est dans une chaîne de const, cela est fait au moment de la compilation, c'est donc l'interprétation du compilateur d'une nouvelle ligne. Je n'arrive pas à trouver une référence expliquant ce comportement, mais je peux prouver que cela fonctionne comme prévu. J'ai compilé ce code à la fois sur Windows et Ubuntu (avec Mono) puis démonté et voici les résultats:
Comme vous pouvez le voir, dans Windows, les nouvelles lignes sont interprétées comme \ r \ n et sur Ubuntu comme \ n
la source
la source
first + Environment.NewLine + second
ce qui est plus efficace et (IMO) plus facile à lire?String.Format
cela produirait 1 chaîne à la fois (mais c'est en interne un peu lent à cause des concaténations spécifiques à la culture, etc.), tandis que la concaténation de chaînes - 1 résultant + 1 temporaire, non?String.Concatenate
, qui construit directement une seule chaîne de sortie (IIRC, si les chaînes sont littérales, la concaténation est effectuée dans le compilateur."a"+b+"c"+d
, etc.) par performance sont égales à une seule? Ou simplement converti enString.Concatenate(a,b,c,d,etc)
, non?string.Format
dans le commentaire. La concaténation de chaînes ne produira aucune chaîne temporaire, car le compilateur appellerastring.Concat(first, Environment.NewLine, second)
.Un autre moyen de placement pratique de Environment.NewLine dans une chaîne de format. L'idée est de créer une méthode d'extension de chaîne qui formate la chaîne comme d'habitude, mais remplace également {nl} dans le texte par Environment.NewLine
Usage
Code
Remarque
Si vous souhaitez que ReSharper met en évidence vos paramètres, ajoutez un attribut à la méthode ci-dessus
[StringFormatMethod ("format")]
Cette implémentation est évidemment moins efficace que simplement String.
Peut-être que l'un d'entre eux, intéressé par cette question, serait également intéressé par la question suivante: mise en forme de chaîne nommée en C #
la source
la source
la source
Environment.NewLine
- voir les autres réponses.const string
les nouvelles versions .net vous permettent d'utiliser $ devant le littéral, ce qui vous permet d'utiliser des variables à l'intérieur comme suit:
la source
Si vous voulez vraiment que la chaîne New Line soit une constante, vous pouvez le faire:
L'utilisateur du mot clé readonly en C # signifie que cette variable ne peut être affectée qu'une seule fois. Vous pouvez trouver la documentation à ce sujet ici . Il permet la déclaration d'une variable constante dont la valeur n'est connue qu'au moment de l'exécution.
la source
J'aime plus la "voie pythonique"
la source
Si vous travaillez avec une application Web, vous pouvez essayer ceci.
la source
Si je comprends la question: couple
"\r\n"
pour obtenir cette nouvelle ligne ci-dessous dans untextbox
. Mon exemple a fonctionné -Une réponse typique pourrait être
s1
s2
dans letext box
style de type défini.la source
Ici, Environment.NewLine ne fonctionne pas.
Je mets un « < br / > » dans une chaîne et travaillé.
Ex:
la source