Conversion D'une chaîne en tableau "caractère" en Java
je veux convertir un String
en un tableau d'objets de la classe caractère mais je ne suis pas en mesure d'effectuer la conversion. Je sais que je peux convertir une chaîne de caractères en un tableau de type primitif "char" avec la méthode toCharArray()
mais cela n'aide pas à convertir une chaîne de caractères en un tableau d'objets de type ".
Comment faire?
12 réponses
utilisez ceci:
String str = "testString";
char[] charArray = str.toCharArray();
Character[] charObjectArray = ArrayUtils.toObject(charArray);
Un paquebot avec java-8 :
String str = "testString";
//[t, e, s, t, S, t, r, i, n, g]
Character[] charObjectArray =
str.chars().mapToObj(c -> (char)c).toArray(Character[]::new);
Ce qu'il fait est:
- obtenir un
IntStream
des personnages (vous pouvez aussi regardercodePoints()
) - mappez chaque valeur de "caractère" à
Character
(vous devez mouler pour réellement dire que son vraiment unchar
, puis Java le boxera automatiquement àCharacter
) - obtenir le tableau résultant en appelant
toArray()
pourquoi ne pas écrire une petite méthode vous-même
public Character[] toCharacterArray( String s ) {
if ( s == null ) {
return null;
}
int len = s.length();
Character[] array = new Character[len];
for (int i = 0; i < len ; i++) {
array[i] = new Character(s.charAt(i));
}
return array;
}
j'espère que le code ci-dessous vous aidera.
String s="Welcome to Java Programming";
char arr[]=s.toCharArray();
for(int i=0;i<arr.length;i++){
System.out.println("Data at ["+i+"]="+arr[i]);
}
ça marche et la sortie est:
Data at [0]=W
Data at [1]=e
Data at [2]=l
Data at [3]=c
Data at [4]=o
Data at [5]=m
Data at [6]=e
Data at [7]=
Data at [8]=t
Data at [9]=o
Data at [10]=
Data at [11]=J
Data at [12]=a
Data at [13]=v
Data at [14]=a
Data at [15]=
Data at [16]=P
Data at [17]=r
Data at [18]=o
Data at [19]=g
Data at [20]=r
Data at [21]=a
Data at [22]=m
Data at [23]=m
Data at [24]=i
Data at [25]=n
Data at [26]=g
String#toCharArray
retourne un tableau de char
, ce que vous avez est un tableau de Character
. Dans la plupart des cas, cela n'a pas d'importance si vous utilisez char
ou Character
comme il ya autoboxing . Le problème dans votre cas est que les tableaux ne sont pas autoboxed, je vous suggère d'utiliser un tableau de char ( char[]
).
Vous devez écrire votre propre méthode dans ce cas. Utilisez une boucle et obtenez chaque caractère en utilisant charAt(i)
et mettez-le à votre tableau Character[]
en utilisant arrayname[i] = string.charAt[i]
.
cette méthode prend la chaîne de caractères comme argument et renvoie le tableau de caractères
/**
* @param sourceString
* :String as argument
* @return CharcterArray
*/
public static Character[] toCharacterArray(String sourceString) {
char[] charArrays = new char[sourceString.length()];
charArrays = sourceString.toCharArray();
Character[] characterArray = new Character[charArrays.length];
for (int i = 0; i < charArrays.length; i++) {
characterArray[i] = charArrays[i];
}
return characterArray;
}
une autre façon de le faire.
String str="I am a good boy";
char[] chars=str.toCharArray();
Character[] characters=new Character[chars.length];
for (int i = 0; i < chars.length; i++) {
characters[i]=chars[i];
System.out.println(chars[i]);
}
si vous travaillez avec JTextField alors il peut être utile..
public JTextField display;
String number=e.getActionCommand();
display.setText(display.getText()+number);
ch=number.toCharArray();
for( int i=0; i<ch.length; i++)
System.out.println("in array a1= "+ch[i]);
l'enchaînement est toujours préférable: d
String str = "somethingPutHere";
Character[] c = ArrayUtils.toObject(str.toCharArray());
si vous ne voulez pas vous fier aux API de tiers, voici un code de travail pour JDK7 ou moins. Je n'instancie pas des objets de caractères temporaires comme le font les autres solutions ci-dessus. les boucles foreach sont plus lisibles, voyez vous-mêmes :)
public static Character[] convertStringToCharacterArray(String str) {
if (str == null || str.isEmpty()) {
return null;
}
char[] c = str.toCharArray();
final int len = c.length;
int counter = 0;
final Character[] result = new Character[len];
while (len > counter) {
for (char ch : c) {
result[counter++] = ch;
}
}
return result;
}
j'ai utilisé la classe StringReader dans java.io . Une de ses fonctions read(char[] cbuf)
lit le contenu d'une chaîne dans un tableau.
String str = "hello";
char[] array = new char[str.length()];
StringReader read = new StringReader(str);
try {
read.read(array); //Reads string into the array. Throws IOException
} catch (IOException e) {
e.printStackTrace();
}
for (int i = 0; i < str.length(); i++) {
System.out.println("array["+i+"] = "+array[i]);
}
cette exécution vous donne la sortie:
array[0] = h
array[1] = e
array[2] = l
array[3] = l
array[4] = o