J'ai une classe avec un membre "adresse" que j'ai lu à partir d'un fichier XML présentant le format suivant (fausse adresse - le nom du champ XML est "adresse" - non affichée):
106- 1190 Crescent St. \ R \ N Toronto Ont \ R \ N V2K 2Z6 STRUT> P> J'ai créé une zone de texte multiligne à afficher sous un formulaire avec la propriété Accept-return définie sur true. p> La zone de texte affiche les éléments suivants avec les caractères neufs ne fonctionnant pas p> 106-1190 Crescent St. \ r \ n Toronto On \ R \ N V2K 2Z6 Strong> P> J'ai regardé en ligne pour diverses solutions et j'ai essayé ce qui suit: p> 1) \ n et \\ n p> 2) \\ r \\ n p> Ça fonctionne si j'ajoute à la propriété directement comme si: p> mais si je charge une variable de chaîne à partir d'un fichier XML et Essayez d'assigner à la propriété Text: p> Address.Text = Employee.Address;
5 Réponses :
Lorsque vous dites Le moyen le plus simple de résoudre le problème avant de remplacer les caractères avant d'afficher. P > "\ n" code> dans le code source, le compiler convertit le \ n code> sur une nouvelle ligne, mais lorsque vous lisez votre XML, vous obtenez les deux caractères distincts \ code> et n code>. Celles-ci ne sont pas traitées par le compilateur, ne seront donc pas converties en une nouvelle ligne. Au lieu de cela, il sera représenté dans une chaîne comme "\\ n" code>, c'est-à-dire une barre oblique inverse évasée suivie de n. Address.Text = Employee.Address.Replace("\\r", "\r").Replace("\\n", "\n");
106-1190 Croissant St. \ R \ N Toronto Ont \ R \ N V2K 2Z6 P> blockQuote>
Je pense que cela change lorsque vous lisez du champ XML. Vérifiez que ou essayez après la lecture pour remplacer la valeur de chaîne deux backslash en une barre oblique inverse. P>
Le contrôle de la zone de texte n'interprète pas les échappés et XML non plus. Donc, ce n'est que les personnages \ r et n. Vous devez traiter la chaîne, substituant la chaîne @ "\ r \ n" pour "\ r \ n". Il s'agit de l'équivalent à ce p> Parce que @ empêche l'interprétation de \ dans la chaîne. P> Edit: basé sur un commentaire, c'est encore mieux formulaire, il se traduit par \ n sur UNIX, et \ r \ n sous Windows. p>
+1 - Une meilleure solution que les autres réponses publiées. Vous voudrez peut-être remplacer les séquences "\ r \ n" avec environnement.Newline plutôt que "\ r \ n" (Remarque: Certains contrôles ne fonctionnent pas avec Environnement.Newline et nécessite un \ r \ n mais je peux ' t Se souvenir de la décoloration si textuelle est l'une des celles qui le font mal)
@Jason: La classe d'édition Windows nécessite \ r \ n et pas seulement \ n. C'est une bonne amélioration.
Merci pour la réponse: j'ai utilisé adresse.text = employé.address.replace ("\\ r \\ n", "\ r \ n"); lire la chaîne XML et l'employé.changeAddress (adresse.text.replace ("\ r \ n", "\\ r \\ n")); Pour l'écrire, sinon le fichier XML utilise les nouvelles lignes sur le brouillon et met les nouvelles lignes dans mon XML qui a l'air mauvais.
Vous devez utiliser Strings RAW , puis écrire . similaire, pour attribuer une chaîne brute À partir d'une variable, utilisez: P> @ "106-1190 Crescent St. \ r \ ntoronto Ont \ r \ nv2k 2z6" code>. Cela entraîne le traitement du littéral de chaîne sans aucune interprétation spécifique à la langue, de sorte que "\ n" code> reste "\ n" code>. Address.Text = @Employee.Address;
Ici vous allez. P>
adresse.text = employé.address.replace ("\ n", environnement.newline); p>
Essayez différentes combinaisons des fonctions d'évacuation () et inescape () pour nettoyer les données ... pensez à cela du point de vue de "Et si je voulais que le" \ n "apparaisse comme un" \ 'et "n' Dans la zone de texte, alors que ferais-je pour que cela ne se présente pas de cette façon.