Diviser un fichier de texte dans les Cordes à vide de la ligne de
Je veux lire un local de fichier txt et lire le texte dans ce fichier. Après que j'ai envie de diviser l'ensemble de ce texte dans des Chaînes de caractères comme dans l'exemple ci-dessous .
Exemple :
Disons fichier contient-
abcdef
ghijkl
aededd
ededed
ededfe
efefeef
efefeff
......
......
Je veux partager ce texte à Cordes
s1 = abcdef+"\n"+ghijkl;
s2 = aededd+"\n"+ededed;
s3 = ededfe+"\n"+efefeef+"\n"+efefeff;
........................
Je veux dire, je veux fractionner le texte sur la ligne vide.
Je ne sais comment faire pour lire un fichier. Je veux aider à décomposer le texte en chaînes
- Êtes-vous certain que la lecture de l'ensemble du fichier, puis fractionnement d'une longue chaîne de caractères est une bonne idée? Je vous suggère plutôt de la lecture par lignes, les ajouter à
StringBuilder
par\n
jusqu'à avoir lu ligne vide. string.split("\n\r")
Trouver cette réponse ici
Vous devez vous connecter pour publier un commentaire.
vous pouvez découper une chaîne en un tableau par
si vous le voulez de nouvelles lignes, il sera
Mise à JOUR*
Si je comprends ce que vous dites, puis john.
puis votre code sera essentiellement
Peut-être ce que vous essayez de l'analyser.
Où allStrings est une liste de toutes vos chaînes.
Le code ci-dessous serait encore si il y a plus de 2 lignes vides entre les données utiles.
(Je n'ai pas testé le code, donc il pourrait y avoir des fautes de frappe.)
Je dirais plus générale regexp:
Dans ce cas, il ne fonctionnera pas correctement sur toute la fin de la ligne de la convention, et également de traiter de la même vide et le vide de l'espace-que des lignes.
Il peut dépendre de la façon dont le fichier est codé, donc je serais probablement faire ce qui suit:
Des fichiers texte encoder des retours à la ligne que "\n\r", tandis que d'autres peuvent être simplement "\n". Deux nouvelles lignes dans une ligne signifie que vous avez une ligne vide.
\r\n
et donc ne fonctionne pas.Godwin était sur la bonne voie, mais je pense que nous pouvons faire de ce travail un peu mieux. À l'aide de l' '[ ]' dans regx est un ou, dans son exemple, si vous aviez un \r\n ce qui serait une nouvelle ligne pas une ligne vide. L'expression régulière permettrait de diviser à la fois sur la \r et \n, et je crois que dans l'exemple que nous étions à la recherche d'une ligne vide qui aurait besoin d'un soit un \n\r\n\r, \r\n\r\n \n\r\r\n \r\n\n\r ou \n\n ou \r\r
Alors d'abord, nous voulons regarder, soit \n\r ou \r\n deux fois, grâce à la combinaison des deux étant possibles.
ensuite, nous avons besoin de chercher \r sans \n après il
enfin, permet de faire de même pour \n
Et tous ensemble que doit être
String.split("((\\n\\r)|(\\r\\n)){2}|(\\r){2}|(\\n){2}");
Remarque, cela ne fonctionne que sur les très spécifiques, par exemple de l'utilisation des nouvelles lignes de caractères et retourne. J'en ruby, vous pouvez effectuer les opérations suivantes, englobant plusieurs cas. Je ne sais pas si il y a un équivalent en Java.
@Kevin code fonctionne très bien et comme il a mentionné que le code n'a pas été testé, voici les 3 changements requis:
1.Si la case pour (tmp==null) devrait venir en premier, sinon il y aura une exception de pointeur null.
2.Ce code laisse la dernière série de lignes ajoutées à la liste de tableaux. Assurez-vous que le dernier est ajouté, nous devons inclure ce code après la boucle while: if(!str.isEmpty()) { allStrings.ajouter(str); }
3.La ligne str += "\n" + tmp; doivent être modifiées pour utiliser \n plutôt si \\n. Veuillez voir la fin de ce fil, j'ai ajouté le code entier de sorte qu'il peut aider à