J'ai un fichier texte .txt, contenant certaines lignes .. Je charge le contient à l'aide de l'objet DemandeBuilder et divisez le responsable avec mots = string.split ("\ n"); Mais je me demande, pourquoi le résultat est contenant la partie "\ n" .. Par exemple, mon texte:
words[0] = "abc\n" words[1] = "def\n" words[2] = "ghi\n"
5 Réponses :
Essayez d'utiliser string.split ("\\ n +") code>. Ou même mieux - divisé ("[\\ r \\ n] +") code> p>
Mais cela ne sauterait-il pas aussi des lignes vides? (Peut-être souhaité)
Ce n'est pas nécessaire, voyez ma réponse.
La double barre oblique inverse est inutile. Regex désigne déjà des barres anti-backslash pour des constructions échappées comme "\ n". Voir "Backslashes, Escapes et Quotiong", docs.oracle.com/javase/1.4.2/docs/apr/java/util/regex/...
si divisé utilise regex, vous devez utiliser "\\ n" au lieu de "\ n" p>
frais. Merci. Je ne voulais pas compter sur la mémoire sans double vérification du doc. Alors, laissez ceci à l'op de regarder. :)
Bien que string.split () code> prend une regex, ce n'est pas nécessaire.
Les retours de chariot de Windows ( Voici la preuve des deux ci-dessus à l'aide de Si vous DO EM> avez-vous la chaise de Windows, vous devez (bien que strictement nécessaire) utiliser "\ r \ n" code>) ne doivent pas faire une différence visible à vos résultats, pas plus que vous devez échapper à l'expression régulière que vous passez à string.split () code>. p>
str.split ("\ n") code>: http: //ideone.com/4pnzi p>
str.split ("\ r \ n") code>:
Super! Votre réponse rend tout clair, mais dans l'éditeur de texte, comment puis-je apporter du texte qui s'est terminé avec \ N? alors \ r \ n est seulement dans Windows?
@Amateurs De nombreuses applications Windows utiliseront \ r \ n code> pour mettre fin à une ligne, tandis que Linux et d'autres applications utilisent \ n code>. Si vous souhaitez dépouiller les retours de chariot ( \ r code>) en Java, utilisez str.replaceall ("\ r \ n", "\ n") code>. Trouver une application Windows qui n'utilise pas les retours de chariot en premier lieu, vous devrez demander à quelqu'un d'autre.
Cette expression divisée n'a pas fonctionné pour scinder l'entrée multi-lignes dans un navigateur chromé.
Vous pouvez également vouloir envisager chaîne [] lignes = text.split ("\\\\ n"); code> p>
Parce que Java a besoin de regex pour être un littéral à chaîne. Vous avez votre \ n mais \ est également spécial dans Regex. Pour compliquer les choses, la façon dont vous vous échappez dans Regex est aussi avec \. Donc, vous avez besoin de vous échapper à nouveau pour faire \\ N, ce qui semble être suffisant .. Pour regex .. Mais Java prend des modèles de regex comme des chaînes. Il vous voit comme étant échappé à \\ n pour faire juste n. Avec \\\ N Java voit A \\ N et Regex pense que vous voulez dire \ n, mais \ est toujours considéré comme un personnage spécial dans Regex. Alors regex \\ = \ et java \\ = \ qui vous laisse avec le \\ n que Java voit enfin comme \ n. Fini par échapper des trucs juste maintenant, heh.
Essayez d'utiliser string.split ("\\\\ n") code>. Ça marche pour moi. P>
Êtes-vous sûr que vos lignes sont terminées avec
\ n code>? Ils pourraient être résiliés avec\ r \ n code> ou quelque chose d'autre même.Ohh ça peut être possible, pouvez-vous me dire comment puis-je le vérifier? Alors, ce qui est créé lorsque j'appuie sur Entrée dans mon éditeur de texte?
Vous pouvez toujours .trim () le résultat et je pense que ça va éliminer ce qui est là.
ok je vais essayer ça .. merci: D