it-swarm.com.de

Konvertieren eines Strings in ein "Character" -Array in Java

Ich möchte ein String in ein Array von Objekten der Klasse Character konvertieren, kann die Konvertierung jedoch nicht durchführen. Ich weiß, dass ich einen String mit der toCharArray() -Methode in ein Array des primitiven Datentyps "char" konvertieren kann, aber es hilft nicht beim Konvertieren eines Strings in ein Array von Objekten von Character Typ.

Wie würde ich das machen?

99
kgd

Benutze das:

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

Ein Liner mit 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); 

Was es tut, ist:

  • holen Sie sich eine IntStream der Zeichen (Sie können auch codePoints() anschauen)
  • ordnen Sie jeden 'Zeichen'-Wert Character zu (Sie müssen das Casting ausführen, um tatsächlich zu sagen, dass es sich wirklich um eine char handelt. Anschließend wird sie von Java automatisch auf Character)
  • rufen Sie das resultierende Array ab, indem Sie toArray() aufrufen.
58
Alexis C.

Warum nicht selbst eine kleine Methode schreiben?

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;
}
32
Alvin

Ich hoffe, der folgende Code wird Ihnen helfen.

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]);
}

Es funktioniert und die Ausgabe ist:

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
5
JDGuide

Diese Methode verwendet String als Argument und gibt das Character Array zurück

/**
 * @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;
}
2
loknath

In diesem Fall müssen Sie Ihre eigene Methode schreiben. Benutze eine Schleife und hole jedes Zeichen mit charAt(i) und setze es auf dein Character[] Array mit arrayname[i] = string.charAt[i].

2
Chandra Sekhar

String#toCharArray gibt ein Array von char zurück, was Sie haben, ist ein Array von Character. In den meisten Fällen spielt es keine Rolle, ob Sie char oder Character verwenden, da Autoboxing vorhanden ist. Das Problem in Ihrem Fall ist, dass Arrays nicht automatisch ausgewählt werden. Ich schlage vor, Sie verwenden ein Array von char (char[]).

2
Sandro

ein anderer Weg, es zu tun.

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]);
    }
1

Wenn Sie sich nicht auf APIs von Drittanbietern verlassen möchten, finden Sie hier einen Arbeitscode für JDK7 oder niedriger. Ich instanziiere keine temporären Charakterobjekte, wie dies bei anderen oben genannten Lösungen der Fall ist. foreach-Schleifen sind besser lesbar, sehen Sie selbst :)

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;
}
0
realPK

Ich habe die StringReader -Klasse in Java.io verwendet. Eine seiner Funktionen read(char[] cbuf) liest den Inhalt eines Strings in ein Array.

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]);
}

Wenn Sie dies ausführen, erhalten Sie die Ausgabe:

array[0] = h
array[1] = e
array[2] = l
array[3] = l
array[4] = o
0
TheBro21

verkettung ist immer am besten: D

String str = "somethingPutHere";
Character[] c = ArrayUtils.toObject(str.toCharArray());
0
ak_2050

Konvertieren der Zeichenfolge in ein Zeichenarray und anschließendes Zurückkonvertieren des Zeichenarrays in eine Zeichenfolge

   //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]


  //Converting back Character array to 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
0
Arpan Saini

wenn Sie mit JTextField arbeiten, kann es hilfreich sein.

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]);
0
M.Shams Tabrez