131 votes

Conversion d'une chaîne de caractères en tableau de "caractères" en Java

Je veux convertir un String à un tableau d'objets de Caractère mais je ne parviens pas à effectuer la conversion. Je sais que je peux convertir un String en un tableau de type de données primitives "char" avec la classe toCharArray() mais elle ne permet pas de convertir un String en un tableau d'objets de type Caractère type.

Comment dois-je m'y prendre ?

208voto

Kuldeep Jain Points 3017

Utilisez ça :

String str = "testString";
char[] charArray = str.toCharArray();
Character[] charObjectArray = ArrayUtils.toObject(charArray);

88voto

ZouZou Points 23600

Une doublure 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 :

  • obtenir un IntStream des personnages (vous pouvez également consulter la rubrique codePoints() )
  • faire correspondre chaque valeur de "caractère" à Character (vous devez faire un moulage pour dire que c'est vraiment une char et Java le mettra automatiquement dans la boîte Character )
  • obtenir le tableau résultant en appelant toArray()

34voto

Alvin Points 3991

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++) {
      /* 
      Character(char) is deprecated since Java SE 9 & JDK 9
      Link: https://docs.oracle.com/javase/9/docs/api/java/lang/Character.html
      array[i] = new Character(s.charAt(i));
      */
      array[i] = s.charAt(i);
   }

   return array;
}

6voto

Arpan Saini Points 383

Conversion d'une chaîne en tableau de caractères, puis reconversion d'un tableau de caractères en chaîne.

   //Givent String
   String given = "asdcbsdcagfsdbgdfanfghbsfdab";

   //Converting String to Character Array(It's an inbuild method of a String)
   char[] characterArray = given.toCharArray();
   //returns = [a, s, d, c, b, s, d, c, a, g, f, s, d, b, g, d, f, a, n, f, g, h, b, s, f, d, a, b]

//ONE WAY : Conversion d'un tableau de caractères en chaîne de caractères (String)

  int length = Arrays.toString(characterArray).replaceAll("[, ]","").length();

  //First Way to get the string back
  Arrays.toString(characterArray).replaceAll("[, ]","").substring(1,length-1)
  //returns asdcbsdcagfsdbgdfanfghbsfdab
  or 
  // Second way to get the string back
  Arrays.toString(characterArray).replaceAll("[, ]","").replace("[","").replace("]",""))
 //returns asdcbsdcagfsdbgdfanfghbsfdab

//Seconde voie : Conversion du tableau de caractères en chaîne de caractères (String)

String.valueOf(characterArray);

//Troisième voie : Conversion d'un tableau de caractères en chaîne de caractères.

Arrays.stream(characterArray)
           .mapToObj(i -> (char)i)
           .collect(Collectors.joining());

Conversion d'une chaîne de caractères en tableau de caractères

Character[] charObjectArray =
                           givenString.chars().
                               mapToObj(c -> (char)c).
                               toArray(Character[]::new);

Conversion de char array en Character Array

 String givenString = "MyNameIsArpan";
char[] givenchararray = givenString.toCharArray();

     String.valueOf(givenchararray).chars().mapToObj(c -> 
                         (char)c).toArray(Character[]::new);

Les avantages de la conversion de char Array en Character Array sont que vous pouvez utiliser la fonction Arrays.stream pour obtenir le sous tableau.

String subStringFromCharacterArray = 

              Arrays.stream(charObjectArray,2,6).
                          map(String::valueOf).
                          collect(Collectors.joining());

3voto

Chandra Sekhar Points 6512

Dans ce cas, vous devez écrire votre propre méthode. Utilisez une boucle et récupérez chaque caractère en utilisant charAt(i) et le placer sur votre Character[] en utilisant arrayname[i] = string.charAt[i] .

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