139 votes

conversion de chaîne en tableau de chaînes dans java

J'ai un string = "name"; que je veux convertir en tableau de chaînes. Comment je fais ? Y a-t-il une fonction java intégrée ? Manuellement, je peux le faire, mais je suis à la recherche d'une fonction java intégrée.

Je veux un tableau où chaque caractère de la chaîne sera une chaîne. comme char 'n'sera maintenant la chaîne "n" stockée dans un tableau.

239voto

rsp Points 14367

Pour commencer votre tâche, String.split divise les chaînes sur une expression régulière et cette expression peut être une chaîne vide :

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

Donne le tableau :

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

Se débarrasser de la première entrée vide est laissé comme un exercice pour le lecteur :-)

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

46voto

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

La deuxième ligne attribue un tableau de chaînes de la longueur de 1. Notez que vous n'avez pas besoin de spécifier vous-même une longueur, telle que :

String[] strArray = new String[1];

au lieu de cela, la longueur est déterminée par le nombre d'éléments dans l'initialisateur. Utilisation de

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

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

15voto

Landei Points 30509

Je suppose qu'il n'est tout simplement pas nécessaire, car il ne sera pas plus simple que

String[] array = {"name"};

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

static String[] convert(String... array) {
   return array;
}

String[] array = convert("name","age","hobby"); 

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

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

Malheureusement s[0] sera vide, mais après cela les lettres n,a,m,e suivront. Si c'est un problème, vous pouvez utiliser par exemple System.arrayCopy afin de se débarrasser de la première entrée du tableau.

15voto

finnw Points 24592

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

1. Utilisation d'un REGEX :

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

La recherche négative de largeur zéro empêche la correspondance de motif au début de l'entrée, de sorte que vous n'obtenez pas une chaîne vide en tête.

2. Utilisation de la 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 String[] singleChars(String s) {
    return
        Lists.transform(Chars.asList(s.toCharArray()),
                        Functions.toStringFunction())
             .toArray(ArrayUtils.EMPTY_STRING_ARRAY);
}

12voto

fonji Points 162

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

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

Il en résulte le tableau suivant :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X