Conseils utiles

Fractionner la chaîne Java par nouvelle ligne

Pin
Send
Share
Send
Send


J'ai "004-034556", chaîne1 = 004 chaîne2 = 034556 que je souhaite diviser en deux lignes:

Cela signifie que la première ligne contiendra des caractères avant '-' et la deuxième ligne contiendra des caractères après String # split () de la chaîne String = "004-034556", String [] parts = string.split ("-"), String part1 = parts, // 004 String part2 = parts, // 034556 Je souhaite également vérifier si elle contient une chaîne ^ Sinon, je lève une exception. Comment puis-je faire cela $

Réponses: 30

Utilisez simplement la méthode appropriée *.

Notez que cela nécessite une expression régulière, assurez-vous donc de sauvegarder les caractères spéciaux si nécessaire.

Donc, si vous voulez diviser, par exemple, période / point ,. qui signifie “n’importe quel caractère” dans une expression régulière, utilisez une barre oblique inversée, divisée ("[.]") pour éviter le caractère spécial unique Pattern # quote (), ou bien, ou utilisez la classe de caractère fractionnée (Pattern.quote (". ")) pour représenter le (s) caractère (s), comme ceci: String [] parts = string.split (Pattern.quote (". ")), // Fractionner sur une période. , ou utilisez String # contains () pour éviter toute la chaîne if (string.contains ("-")) <// Divisez-la. > else <jette une nouvelle exception IllegalArgumentException ("String" + string + "ne contient pas -"),>.

Pour vérifier à l’avance si une chaîne contient certains caractères, utilisez simplement? .

S'il vous plaît noter que cela n'accepte pas les regex. Pour ce faire, utilisez? = À la place.

Si vous souhaitez conserver le caractère de séparation dans les pièces obtenues, utilisez le verso positif. Si vous souhaitez que le caractère fractionné se trouve à gauche, utilisez une apparence positive en ajoutant String string = "004-034556", String [] parts = string.split ("(? = -)"), String part1 = parts, / / 004 String part2 = parts, // -034556 groupe dans le modèle.

Si vous souhaitez que le caractère fractionné se trouve à droite, utilisez un préfixe positif en utilisant String string = "004-034556-42", String [] parts = string.split ("-", 2), String part1 = parts, / / 004 String part2 = parts, // 034556-42 groupe préfixant dans le modèle.

Si vous souhaitez limiter le nombre de parties résultantes, vous pouvez spécifier le nombre souhaité en tant que deuxième argument de la méthode (d +) - (d +).

Une alternative au traitement direct de la chaîne serait d'utiliser une expression régulière avec des groupes de capture. L'avantage de ceci est que cela rend évidente la restriction d'entrée plus complexe. Par exemple, ce qui suit divise une chaîne en deux parties et garantit qu'elles ne sont composées que de nombres:

Comme le modèle est fixé dans cette instance, il peut être compilé à l'avance et enregistré en tant que membre statique (initialisé au moment du chargement de la classe dans l'exemple). Expression régulière:

Les crochets indiquent les groupes de capture. Une chaîne correspondant à cette partie de l’expression régulière peut être obtenue par la méthode Match.group (), comme indiqué. Les symboles d correspondent à un seul chiffre décimal et le symbole + signifie "correspond à une ou plusieurs des expressions précédentes". "Cela n'a pas vraiment d'importance, donc cela correspond simplement à ce symbole d'entrée." Notez que vous devez doubler la barre oblique inverse lors de l'écriture en tant que chaîne Java. Quelques autres exemples:

Cela divisera votre chaîne en 2 parties. Le premier élément du tableau sera la partie contenant le matériel avant - et le deuxième élément du tableau contiendra la partie de votre chaîne après -.

Si la longueur du tableau n'est pas égale à 2, la chaîne n'était pas au format: split ().

17 réponses

Cela devrait vous couvrir:

vous devez vous préoccuper de deux nouvelles lignes seulement (UNIX et Windows).

Si vous ne voulez pas de lignes vides:

La méthode split utilise une expression régulière (expressions régulières). Comme Java 8 regex supporte R, ce qui est (avec la documentation de la classe Pattern):

Linebreak Matcher
R n’importe quelle séquence de saut de ligne unicode est équivalente à u000D u000A | [ u000A u000B u000C u000D u0085 u2028 u2029]

afin que nous puissions l'utiliser pour correspondre à:

  • u000D 0A -> r n paire
  • u000A -> ligne d'alimentation ( n)
  • u000B -> table de chaînes (ne pas confondre avec le caractère de tabulation t ce qu’il s’agit de u0009)
  • u000C -> formulaire d'alimentation ( f)
  • u000D -> retour chariot ( r)
  • u0085 -> ligne suivante (NEL)
  • u2028 -> séparateur de lignes
  • u2029 -> séparateur d'élément

Comme vous pouvez le constater, r n est placé au début de l’expression régulière, ce qui garantit que celle-ci essaie d’abord de faire correspondre celle-ci. un couple, et seulement si cela échoue, il essaiera de faire correspondre caractère unique séparateurs de lignes.

donc si vous voulez diviser en une ligne de division, utilisez split (" R").

Exemple de saut de ligne

Supposons que nous ayons la variable strMain. Sa signification consiste en plusieurs mots séparés par une virgule: "Alpha, Bêta, Gamma, Delta, Sigma."

Imprimez chaque mot sur une ligne séparée et séparez-les par des virgules. En conséquence, nous obtenons cinq lignes distinctes:

Pour implémenter cela, utilisez la méthode split (). En argument, nous passons à la scission. Dans notre cas, le séparateur est une virgule. Exemple de code:

Comment diviser une chaîne avec un espace

Considérons une situation dans laquelle il est nécessaire de séparer la ligne avec un espace. Regardez l'exemple ci-dessous. Nous avons une variable chaîne strMain, composée de plusieurs mots: "Welcome to Guru99".

Cette publication est une traduction de l'article "Comment fractionner une chaîne de caractères en Java: apprendre avec l'exemple", préparé par l'équipe amicale du projet de technologie Internet

Pin
Send
Share
Send
Send