129

をCharacterクラスStringのオブジェクトの配列に変換したいのですが、変換を実行できません。このメソッドを使用して文字列をプリミティブデータ型タイプ「char」の配列に変換できることは知っていますが、文字列を文字タイプのオブジェクトの配列に変換するのには役立ちません。toCharArray()

どうすればいいですか?

4

14 に答える 14

204

これを使って:

String str = "testString";
char[] charArray = str.toCharArray();
Character[] charObjectArray = ArrayUtils.toObject(charArray);
于 2012-04-04T06:52:54.583 に答える
34

ちょっとしたメソッドを自分で書いてみませんか

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;
}
于 2012-04-04T06:51:27.290 に答える
3

以下のコードがお役に立てば幸いです。

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

動作しており、出力は次のとおりです。

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
于 2012-04-04T07:18:44.173 に答える
3

この場合、独自のメソッドを作成する必要があります。ループを使用し、 を使用して各文字を取得し、 を使用して配列charAt(i)に設定します。Character[]arrayname[i] = string.charAt[i]

于 2012-04-04T06:51:20.037 に答える
3

String#toCharArrayの配列を返します。charあなたが持っているのは の配列ですCharacterほとんどの場合、 autoboxingがあるためchar、 orを使用するかどうかは問題ではありません。あなたの場合の問題は、配列が自動ボックス化されていないことです。char ( ) の配列を使用することをお勧めします。Characterchar[]

于 2012-04-04T06:55:23.167 に答える
2

このメソッドは文字列を引数として取り、文字配列を返します

/**
 * @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;
}
于 2014-05-08T04:49:33.653 に答える
1

それを行う別の方法。

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]);
    }
于 2012-04-04T06:56:51.377 に答える
0

JTextField を使用している場合は、これが役立ちます。

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]);
于 2013-10-28T01:34:51.597 に答える
0

java.ioでStringReaderクラスを使用しました。その関数の 1 つは、文字列の内容を配列に読み取ります。read(char[] cbuf)

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

これを実行すると、次の出力が得られます。

array[0] = h
array[1] = e
array[2] = l
array[3] = l
array[4] = o
于 2016-08-29T15:43:02.603 に答える
0

サードパーティの API に依存したくない場合は、JDK7 以下で動作するコードを次に示します。上記の他のソリューションで行われたように、一時的なキャラクター オブジェクトをインスタンス化していません。foreach ループの方が読みやすいです。自分で確認してください :)

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;
}
于 2016-06-27T08:24:08.963 に答える