J'ai un string="name";
que je veux convertir en un tableau de chaînes. Comment fait-on ça? Existe-t-il une fonction intégrée Java? Je peux le faire manuellement mais je recherche une fonction intégrée Java.
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.
Pour commencer votre affectation, String.split
divise les chaînes d'une expression régulière. 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 1ère entrée vide reste un exercice pour le lecteur :-)
Remarque: Dans Java 8, le premier élément vide n'est plus inclus.
String strName = "name";
String[] strArray = new String[] {strName};
System.out.println(strArray[0]); //prints "name"
La deuxième ligne alloue un tableau de chaînes d'une 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'initalizer. En utilisant
String[] strArray = new String[] {strName, "name1", "name2"};
crée un tableau d'une longueur de 3.
En supposant que vous souhaitiez réellement un tableau de chaînes à caractère unique (pas un char[]
ou Character[]
)
1. En utilisant une regex:
public static String[] singleChars(String s) {
return s.split("(?!^)");
}
Le préfixe négatif de largeur zéro empêche la mise en correspondance du motif au début de l'entrée, de sorte que vous n'obtenez 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 String[] singleChars(String s) {
return
Lists.transform(Chars.asList(s.toCharArray()),
Functions.toStringFunction())
.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
}
Je suppose qu’il n’est tout simplement pas nécessaire, car cela 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 d'une seule 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 cela pose un problème, vous pouvez utiliser par exemple System.arrayCopy afin de supprimer la première entrée du tableau.
String data = "abc";
String[] arr = explode(data);
public String[] explode(String s) {
String[] arr = new String[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 procéder: toCharArray ():
String k = "abcdef";
char[] x = k.toCharArray();
Cela résulte dans le tableau suivant:
[a,b,c,d,e,f]
String array = tableau de caractères?
Ou avez-vous une chaîne avec plusieurs mots dont chacun devrait être un élément de tableau?
String[] array = yourString.split(wordSeparator);
Convertissez-le pour taper Char
?
Utilisez simplement la méthode .tocharArray () en Java
String k = "abc";
char alpha = k.tocharArray();
Cela devrait fonctionner correctement dans Java 8
Vous pouvez utiliser string.chars().mapToObj(e -> new String(new char[] {e}));
, bien que cela soit assez long et ne fonctionne qu'avec Java 8. Voici quelques méthodes supplémentaires:
string.split(""); (Has an extra whitespace character at the beginning of the array if used before Java 8)
string.split("|");
string.split("(?!^)");
Arrays.toString(string.toCharArray()).substring(1, string.length() * 3 + 1).split(", ");
Le dernier est juste inutilement long, c'est juste pour le plaisir!
Le fractionnement d'une chaîne vide avec String.split () renvoie un tableau à élément unique contenant une chaîne vide . Dans la plupart des cas, vous préféreriez probablement obtenir un tableau vide ou une valeur null si vous transmettez une valeur null, ce qui correspond exactement à ce que vous obtenez avec org.Apache.commons.lang3.StringUtils.split (str) .
import org.Apache.commons.lang3.StringUtils;
StringUtils.split(null) => null
StringUtils.split("") => []
StringUtils.split("abc def") => ["abc", "def"]
StringUtils.split("abc def") => ["abc", "def"]
StringUtils.split(" abc ") => ["abc"]
Une autre option est google guava Splitter.split () et Splitter.splitToList () qui renvoient un itérateur et une liste en conséquence. Contrairement à la version Apache, Splitter jettera un NPE sur null
:
import com.google.common.base.Splitter;
Splitter SPLITTER = Splitter.on(',').trimResults().omitEmptyStrings();
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 itérateur, utilisez Splitter.splitToList () .
Une méthode supplémentaire:
Comme cela a déjà été mentionné, vous pouvez facilement convertir le nom de chaîne d'origine en un tableau de caractères:
String originalString = "name";
char[] charArray = originalString.toCharArray();
Pour poursuivre sur cette lancée, vous pouvez ensuite convertir le tableau de caractères en tableau de chaînes:
String[] stringArray = new String[charArray.length];
for (int i = 0; i < charArray.length; i++){
stringArray[i] = String.valueOf(charArray[i]);
}
À ce stade, votre tableau de chaînes sera rempli avec les valeurs d'origine de votre chaîne d'origine "nom". Par exemple, appelez maintenant
System.out.println(stringArray[0]);
Renverra la valeur "n" (sous forme de chaîne) dans ce cas.
voici converti une chaîne simple en un tableau de chaînes en utilisant la méthode split.
String [] stringArray="My Name is ABC".split(" ");
Sortie
stringArray[0]="My";
stringArray[1]="Name";
stringArray[2]="is";
stringArray[3]="ABC";
/**
* <pre>
* MyUtils.splitString2SingleAlphaArray(null, "") = null
* MyUtils.splitString2SingleAlphaArray("momdad", "") = [m,o,m,d,a,d]
* </pre>
* @param str the String to parse, may be null
* @return an array of parsed Strings, {@code null} if null String input
*/
public static String[] splitString2SingleAlphaArray(String s){
if (s == null )
return null;
char[] c = s.toCharArray();
String[] sArray = new String[c.length];
for (int i = 0; i < c.length; i++) {
sArray[i] = String.valueOf(c[i]);
}
return sArray;
}
La méthode String.split
générera 1 vide, vous devez la supprimer du tableau. C'est ennuyant.
Sur la base du titre de cette question, je suis venu ici pour convertir une chaîne en un tableau de sous-chaînes divisé par un délimiteur. J'ajouterai cette réponse ici aux autres qui pourraient avoir la même question.
Cela crée un tableau de mots en scindant la chaîne à chaque espace:
String str = "string to string array conversion in Java";
String delimiter = " ";
String strArray[] = str.split(delimiter);
Cela crée le tableau suivant:
// [string, to, string, array, conversion, in, Java]
Testé en Java 8