[JAVA] Différences dans les méthodes de fractionnement de StringUtils

Aperçu

Il existe des variantes de la méthode de fractionnement StringUtils de Commons Lang de Apache Commons. Il y en a beaucoup, mais certains d'entre eux sont difficiles à comprendre, et des explications et des exemples de documentation API Même si je l'ai lu ou cherché les informations sur le net, je ne pouvais pas bien les comprendre, j'ai donc vérifié la différence.

Version utilisée

Dernière 3.7 pour le moment

variation

1. système split ()

1-1. split(String str) Divisez la chaîne str avec des espaces blancs (tabulations, sauts de ligne, espaces). Les espaces pleine largeur sont également reconnus comme des espaces.

1-2. split(String str, char separatorChar) Divisez la chaîne str avec le caractère de séparation separatorChar. Il diffère de 1 à 1. En ce que le séparateur est explicitement spécifié.

1-3. split(String str, String separatorChars) Divisez la chaîne de caractères str par le groupe de caractères de séparation separatorChars. Il diffère de 1 à 2. En ce que ** plusieurs caractères de séparation peuvent être spécifiés **. À première vue, il semble qu'un séparateur de chaîne de caractères puisse être utilisé, mais il est difficile de comprendre que ** les séparateurs sont un caractère ** et plusieurs types peuvent être spécifiés. De plus, comme le type est String, il est facile de se méprendre, et comme le séparateur adjacent est traité comme un séparateur, il semble souvent qu'il puisse être séparé par une chaîne de caractères, et parfois cela ne fonctionne pas. Soyez prudent car vous en êtes accro. Par exemple

python


StringUtils.split("xxxxxandyyyyyandzzzzz", "and");

Dans le cas de,

python


{"xxxxx", "yyyyy", "zzzzz"}

Sera retourné, alors je pense, "Oh! Vous pouvez vous séparer avec ʻet`. C'est bon!"

python


StringUtils.split("xxaxxandyynyyandzzdzz", "and");

Dans le cas de,

python


{"xxaxx", "yynyy", "zzdzz"}

Je pense que ce sera retourné, mais en réalité le résultat est

python


{"xx", "xx", "yy", "yy", "zz", "zz"}

Puis, "Hein!?" Si vous voulez utiliser une chaîne de caractères comme séparateur, utilisez splitByWholeSeparator () décrit plus loin.

1-4. split(String str, String separatorChars, int max) En plus de 1-3., Vous pouvez spécifier le nombre maximum de divisions avec max. Même si le nombre de délimiteurs est supérieur à «max», il ne peut pas être délimité à plus de «max». Par exemple, si vous spécifiez 2 pour «max», le nombre maximum d'éléments dans le tableau renvoyé sera de 2, quel que soit le nombre d'éléments séparés. Si 0 ou moins est spécifié pour «max», il sera traité comme un nombre infini.

2. système splitByWholeSeparator ()

2-1. splitByWholeSeparator(String str, String separator) Divisez la chaîne «str» par la chaîne de séparation «séparateur». C'est la méthode à utiliser lorsque vous souhaitez séparer avec une chaîne de caractères. Si c'est le cas

python


StringUtils.splitByWholeSeparator("xxaxxandyynyyandzzdzz", "and");

Dans le cas de

python


{"xxaxx", "yynyy", "zzdzz"}

Sera retourné.

2-2. splitByWholeSeparator(String str, String separator, int max) En plus de 2-1., Une version dans laquelle le nombre maximum de divisions «max» peut être spécifié.

3. système splitPreserveAllTokens ()

3-1. splitPreserveAllTokens(String str) Dans le cas des méthodes apparues jusqu'à présent, les séparateurs adjacents sont considérés comme un seul séparateur, mais dans le cas de ce système, si les séparateurs sont adjacents, un jeton vide est renvoyé. En d'autres termes

python


StringUtils.split("a  b");

Dans le cas de,

python


{"a", "b"}

Est retourné,

python


StringUtils.splitPreserveAllTokens("a  b");

Dans le cas de,

python


{"a", "", "b"}

Est retourné. Il peut être utilisé lors du traitement de données séparées par des virgules et des données séparées par des tabulations.

3-2. splitPreserveAllTokens(String str, char separatorChar) Preserve All Tokens version 1-2.

3-3. splitPreserveAllTokens(String str, String separatorChars) Preserve All Tokens version de 1-3.

3-4. splitPreserveAllTokens(String str, String separatorChars, int max) Preserve All Tokens version 1-4.

4. système splitByWholeSeparatorPreserveAllTokens ()

4-1. splitByWholeSeparatorPreserveAllTokens(String str, String separator) Le nom de la méthode est long! En bref, il s'agit d'une combinaison de 2 et 3 systèmes, et si une chaîne de caractères peut être utilisée pour le séparateur et que les séparateurs sont adjacents, un jeton vide est renvoyé.

4-2. splitByWholeSeparatorPreserveAllTokens(String str, String separator, int max) La version spécifiée par max de celui-ci. Le titre devient de plus en plus long. Jugem Jugem ...

5. système splitByCharacterType ()

5-1. splitByCharacterType(String str) Une méthode de fractionnement avec une couleur de cheveux légèrement différente qui détermine le type de caractère et divise les caractères consécutifs du même type en un seul jeton. Le jugement du type de caractère est [getType ()](https://docs.oracle.com/javase/jp/10/docs/api/java/lang/Character.html#getType (int) de java.lang.Character )). La catégorisation est décrite dans la liste des éléments associés du document API de cette méthode getType (), mais il y a tellement de types!

Exemple


StringUtils.splitByCharacterType("ABCabc 123");

Résultat d'exécution


{"ABC", "abc", " ", "123", "Ah"}

5-2. splitByCharacterTypeCamelCase(String str) La règle de division est presque la même que 5 à 1. Cependant, si les lettres supérieures et inférieures viennent après les lettres supérieures et inférieures, les lettres supérieures et inférieures appartiennent au jeton des lettres inférieures et inférieures. Pour fendre les cordes de l'étui de chameau?

Exemple


StringUtils.splitByCharacterTypeCamelCase("ABCabc 123");

Résultat d'exécution


{"AB", "Cabc", " ", "123", "Ah"}

Recommended Posts

Différences dans les méthodes de fractionnement de StringUtils
Liste des méthodes utilisées dans le rang PAIZA D
Diviser routes.rb dans Rails6
Sortie en multiples de 3
Pensez aux différences entre les fonctions et les méthodes (en Java)
À propos des méthodes de validation dans JUnit
Méthodes d'assistance disponibles dans la devise
Tester les méthodes privées dans JUnit
Tester les méthodes privées dans JUnit
Résumé des "différences d'interface abstraites"
Implémentation Java de tri-tree
Les pièges de JAX-RS WebTarget.queryParam ()
Méthodes statiques simulées dans Mockito 3.4
Implémentation de HashMap avec kotlin
Concaténer les chaînes renvoyées par des méthodes multi-objets dans Java Stream