Tekenreeks converteren naar “Character”-array in Java

Ik wil een Stringconverteren naar een array van objecten van Tekenklasse, maar ik kan de conversie niet uitvoeren. Ik weet dat ik een String kan converteren naar een array van primitief datatype type “char” met de toCharArray()methode, maar het helpt niet bij het converteren van een String naar een array van objecten van Teken-type.

Hoe zou ik dat doen?


Antwoord 1, autoriteit 100%

Gebruik dit:

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

Antwoord 2, autoriteit 41%

Eén voering met :

String str = "testString";
//[t, e, s, t, S, t, r, i, n, g]
Character[] charObjectArray = 
    str.chars().mapToObj(c -> (char)c).toArray(Character[]::new); 

Wat het doet is:

  • krijg een IntStreamvan de tekens (je kunt ook kijken naar codePoints())
  • wijs elke ‘character’-waarde toe aan Character(je moet casten om te zeggen dat het echt een charis, en dan zal Java het automatisch in een kader plaatsen in Character)
  • verkrijg de resulterende array door toArray()
  • aan te roepen


Antwoord 3, autoriteit 17%

Waarom schrijf je niet zelf een kleine methode

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

Antwoord 4, autoriteit 2%

Ik hoop dat de onderstaande code je zal helpen.

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

Het werkt en de output is:

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

Antwoord 5, autoriteit 2%

String#toCharArrayretourneert een array van char, wat je hebt is een array van Character. In de meeste gevallen maakt het niet uit of je charof Charactergebruikt, want er is autoboxing. Het probleem in jouw geval is dat arrays niet autoboxed zijn, ik raad je aan een array van char (char[]) te gebruiken.


Antwoord 6, autoriteit 2%

Je moet in dit geval je eigen methode schrijven. Gebruik een lus en haal elk teken op met charAt(i)en stel het in op je Character[]array met arrayname[i] = string.charAt[i].


Antwoord 7

een andere manier om het te doen.

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

Antwoord 8

als je met JTextField werkt, kan het handig zijn..

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

Antwoord 9

ketenen is altijd het beste 😀

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

Antwoord 10

Als u niet wilt vertrouwen op API’s van derden, vindt u hier een werkende code voor JDK7 of lager. Ik maak geen tijdelijke karakterobjecten zoals gedaan door andere bovenstaande oplossingen. foreach loops zijn beter leesbaar, zie jezelf 🙂

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

Antwoord 11

Ik heb de klasse StringReadergebruikt in java.io. Een van zijn functies read(char[] cbuf)leest de inhoud van een string in een 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]);
}

Als je dit uitvoert, krijg je de output:

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

Antwoord 12


String[] arr = { "abc", "cba", "dac", "cda" };
    Map<Character, Integer> map = new HashMap<>();
    String string = new String();
    for (String a : arr) {
        string = string.concat(a);
    }
    System.out.println(string);
    for (int i = 0; i < string.length(); i++) {
        if (map.containsKey(string.charAt(i))) {
            map.put(string.charAt(i), map.get(string.charAt(i)) + 1);
        } else {
            map.put(string.charAt(i), 1);
        }
    }
    System.out.println(map);

//out put {a=4, b=2, c=4, d=2}

Other episodes