chaîne à la conversion de tableau de chaînes en Java

J’ai un ssortingng="name"; Je veux convertir en un tableau de chaînes. Comment fait-on ça? Y a-t-il une fonction Java intégrée? Je peux le faire manuellement, mais je recherche une fonction Java intégrée.

Je veux un tableau où chaque caractère de la chaîne sera une chaîne. comme le char ‘n’ sera maintenant la chaîne “n” stockée dans un tableau.

Pour commencer votre affectation, Ssortingng.split divise les chaînes sur une expression régulière, cette expression peut être une chaîne vide:

 Ssortingng[] ary = "abc".split(""); 

Donne le tableau:

 (java.lang.Ssortingng[]) [, a, b, c] 

Se débarrasser de la 1ère entrée vide est laissé comme un exercice pour le lecteur 🙂

Remarque: Dans Java 8, le premier élément vide n’est plus inclus.

 Ssortingng strName = "name"; Ssortingng[] strArray = new Ssortingng[] {strName}; System.out.println(strArray[0]); //prints "name" 

La deuxième ligne alloue un tableau de chaînes de longueur 1. Notez que vous n’avez pas besoin de spécifier une longueur vous-même, par exemple:

 Ssortingng[] strArray = new Ssortingng[1]; 

au lieu de cela, la longueur est déterminée par le nombre d’éléments dans l’initalizer. En utilisant

 Ssortingng[] strArray = new Ssortingng[] {strName, "name1", "name2"}; 

crée un tableau d’une longueur de 3.

En supposant que vous voulez vraiment un tableau de chaînes à un seul caractère (pas un char[] ou un Character[] )

1. En utilisant une regex:

 public static Ssortingng[] singleChars(Ssortingng s) { return s.split("(?!^)"); } 

La recherche négative de largeur zéro empêche la correspondance de modèle au début de l’entrée, vous n’obtenez donc pas de chaîne vide en tête.

2. Utilisation de goyave :

 import java.util.List; import org.apache.commons.lang.ArrayUtils; import com.google.common.base.Functions; import com.google.common.collect.Lists; import com.google.common.primitives.Chars; // ... public static Ssortingng[] singleChars(Ssortingng s) { return Lists.transform(Chars.asList(s.toCharArray()), Functions.toSsortingngFunction()) .toArray(ArrayUtils.EMPTY_STRING_ARRAY); } 

Je suppose qu’il n’y a tout simplement pas besoin de cela, car il ne sera pas plus simple que

 Ssortingng[] array = {"name"}; 

Bien sûr, si vous insistez, vous pourriez écrire:

 static Ssortingng[] convert(Ssortingng... array) { return array; } Ssortingng[] array = convert("name","age","hobby"); 

[Edit] Si vous voulez des chaînes à une lettre, vous pouvez utiliser:

 Ssortingng[] s = "name".split(""); 

Malheureusement, s [0] sera vide, mais après cela, les lettres n, a, m, e suivront. Si cela pose problème, vous pouvez utiliser par exemple System.arrayCopy pour supprimer la première entrée du tableau.

 Ssortingng data = "abc"; Ssortingng[] arr = explode(data); public Ssortingng[] explode(Ssortingng s) { Ssortingng[] arr = new Ssortingng[s.length]; for(int i = 0; i < s.length; i++) { arr[i] = String.valueOf(s.charAt(i)); } return arr; } 

Dans java 8, il existe une méthode avec laquelle vous pouvez faire ceci: toCharArray ():

 Ssortingng k = "abcdef"; char[] x = k.toCharArray(); 

Cela se traduit par le tableau suivant:

 [a,b,c,d,e,f] 

Ssortingng array = tableau de caractères?

Ou avez-vous une chaîne avec plusieurs mots dont chacun devrait être un élément de tableau?

Ssortingng[] array = yourSsortingng.split(wordSeparator);

Utilisez simplement la méthode .tocharArray () dans java

 Ssortingng k = "abc"; char alpha = k.tocharArray(); 

Cela devrait fonctionner très bien dans JAVA 8

Une méthode supplémentaire:

Comme cela a déjà été mentionné, vous pouvez facilement convertir le Ssortingng original “name” en un tableau de caractères:

 Ssortingng originalSsortingng = "name"; char[] charArray = originalSsortingng.toCharArray(); 

Pour poursuivre dans cette voie, vous pouvez ensuite convertir le tableau de caractères en un tableau Ssortingng:

 Ssortingng[] ssortingngArray = new Ssortingng[charArray.length]; for (int i = 0; i < charArray.length; i++){ stringArray[i] = String.valueOf(charArray[i]); } 

À ce stade, votre ssortingngArray sera rempli avec les valeurs d'origine de votre chaîne d'origine "name". Par exemple, maintenant appelant

 System.out.println(ssortingngArray[0]); 

Renvoie la valeur "n" (sous forme de chaîne) dans ce cas.

Diviser une chaîne vide avec Ssortingng.split () renvoie un tableau d’éléments unique contenant une chaîne vide . Dans la plupart des cas, vous préféreriez probablement avoir un tableau vide, ou un null si vous avez passé un null, ce qui est exactement ce que vous obtenez avec org.apache.commons.lang3.SsortingngUtils.split (str) .

 import org.apache.commons.lang3.SsortingngUtils; SsortingngUtils.split(null) => null SsortingngUtils.split("") => [] SsortingngUtils.split("abc def") => ["abc", "def"] SsortingngUtils.split("abc def") => ["abc", "def"] SsortingngUtils.split(" abc ") => ["abc"] 

Une autre option est Google Splitter.split () et Splitter.splitToList () qui retournent un iterator et une liste correspondante. Contrairement à la version apache, Splitter lancera un NPE sur null :

 import com.google.common.base.Splitter; Splitter SPLITTER = Splitter.on(',').sortingmResults().omitEmptySsortingngs(); SPLITTER.split("a,b, c , , ,, ") => [a, b, c] SPLITTER.split("") => [] SPLITTER.split(" ") => [] SPLITTER.split(null) => NullPointerException 

Si vous voulez une liste plutôt qu’un iterator, utilisez Splitter.splitToList () .

 /** * 
 * MyUtils.splitSsortingng2SingleAlphaArray(null, "") = null * MyUtils.splitSsortingng2SingleAlphaArray("momdad", "") = [m,o,m,d,a,d] * 

* @param str the Ssortingng to parse, may be null * @return an array of parsed Ssortingngs, {@code null} if null Ssortingng input */ public static Ssortingng[] splitSsortingng2SingleAlphaArray(Ssortingng s){ if (s == null ) return null; char[] c = s.toCharArray(); Ssortingng[] sArray = new Ssortingng[c.length]; for (int i = 0; i < c.length; i++) { sArray[i] = String.valueOf(c[i]); } return sArray; }

La méthode Ssortingng.split générera vide 1er, vous devez le supprimer du tableau. C'est ennuyant.

Vous pouvez utiliser ssortingng.chars().mapToObj(e -> new Ssortingng(new char[] {e})); , bien que ce soit assez long et ne fonctionne qu’avec java 8. Voici quelques méthodes supplémentaires:

ssortingng.split(""); (Has an extra whitespace character at the beginning of the array if used before Java 8) ssortingng.split(""); (Has an extra whitespace character at the beginning of the array if used before Java 8) ssortingng.split("|"); ssortingng.split("(?!^)"); Arrays.toSsortingng(ssortingng.toCharArray()).subssortingng(1, ssortingng.length() * 3 + 1).split(", ");

Le dernier est inutilement long, c’est juste pour le fun!

Basé sur le titre de cette question, je suis venu ici en voulant convertir un Ssortingng en un tableau de sous-chaînes divisé par un délimiteur. Je vais append cette réponse ici pour les autres qui peuvent avoir la même question.

Cela crée un tableau de mots en divisant la chaîne à chaque espace:

 Ssortingng str = "ssortingng to ssortingng array conversion in java"; Ssortingng delimiter = " "; Ssortingng strArray[] = str.split(delimiter); 

Cela crée le tableau suivant:

 // [ssortingng, to, ssortingng, array, conversion, in, java] 

La source

Testé en Java 8

ici, vous avez converti une chaîne simple en un tableau en utilisant la méthode split.

 Ssortingng [] ssortingngArray="My Name is ABC".split(" "); 

Sortie

 ssortingngArray[0]="My"; ssortingngArray[1]="Name"; ssortingngArray[2]="is"; ssortingngArray[3]="ABC";