2017-06-03 19 views
1

charをcharで追加することでJavaでStringを作成する方法。 私はアル文字の間に "、"を付けなければならないので、このようにする必要があります。 私はこれを試しましたが、うまくいきませんでした。Javaでcharをcharで追加して文字配列から文字列を作成する方法

String t; 
int l = t.length(); 
char[] a; 
a = new char[l]; 
String rel = ","; 
String ret = null; 

for (int i = 0; i<l; i++){ 
    a[i] = new Character(t.charAt(0)); 
} 

for (int v = 0; v<l; v--){ 
    ret += a[v]; 
    ret += rel; 
} 
+1

'StringBuilder'を使用してください。 –

答えて

1

nullの代わりに空の文字列を使用して初期化すると動作します。

String t = "foobarbaz"; 
int l = t.length(); 
char[] a; 
a = new char[l]; 
String rel = ","; 
String ret = ""; 
for (int i = 0; i<l; i++){ 
    a[i] = t.charAt(i); 
} 
for (int v = 0; v<l; v++){ 
    ret += a[v]; 
    ret += rel; 
} 
System.out.println(ret); 
0

私はコメントにあなたのコードに誤りを入れました。

String t; 
int l = t.length(); 
char[] a; 
a = new char[l]; 
String rel = ","; 
String ret = null; //you initialize ret to null, it should be ""; 

for (int i = 0; i<l; i++){ 
    //you always set it to the character at position 0, you should do t.charAt(i) 
    //you don't need to use the wrapper class just t.charAt(i) will be fine. 
    a[i] = new Character(t.charAt(0)); 
} 

for (int v = 0; v<l; v--){//you decrement v instead of incrementing it, this will lead to exceptions 
    ret += a[v]; 
    ret += rel;//you always add the delimiter, note that this will lead to a trailing delimiter at the end 
} 

StringBuilderを試してみるとよいでしょう。文字列連結を使用するよりもはるかに効率的です。配列aを使用することも本当に必要ではありません。この実装を見てください。

String t = "Test"; 
StringBuilder builder = new StringBuilder(); 
if(t.length() > 0){ 
    builder.append(t.charAt(0)); 
    for(int i=1;i<t.length();i++){ 
     builder.append(","); 
     builder.append(t.charAt(i)); 
    } 
} 
System.out.println(builder.toString()); 
+0

Thxは非常に役に立ちました... – xcynthos

1

あなたはそれを行うには非常に複雑必要はありません、あなたは明示的な文字列操作のためのStringBuilderを使用する必要があります。

String s = "abcdefg"; 

StringBuilder builder = new StringBuilder(); 

for (char c : s.toCharArray()) { 
    builder.append(c).append(","); 
} 

// Alternatively, you can do it in this way 
for (String symbol : s.split("")) { 
    builder.append(symbol).append(","); 
} 

System.out.println(builder.toString()); 

// Java 8 (the result string doesn't have a comma at the end) 
String collect = Arrays.stream(s.split("")).collect(Collectors.joining(",")); 

// Java8 StringJoiner 
StringJoiner sj = new StringJoiner(","); 
// StringJoiner sj = new StringJoiner(",", "", ","); 
for (String str : s.split("")) { 
    sj.add(str); 
} 
+0

コンマを転売するのはどうですか? – eg04lt3r

+0

@ eg04lt3rもしそれが重要であれば、Java8スタイルで行われるかもしれません。ただし、著者コードは文字列の最後にコンマを入れます。 –

0

はこれを見てください:

//Word to be delimited by commas  
    String t = "ThisIsATest"; 

    //get length of word. 
    int l = t.length(); //4 

    char[] a; 
    a = new char[l]; 
    // we will set this to a comma below inside the loop 
    String rel = ""; 
    //set ret to empty string instead of null otherwise the word "null" gets put at the front of your return string 
    String ret = ""; 

    for (int i = 0; i<l; i++){ 
     //you had 0 instead of 'i' as the parameter of t.charAt. You need to iterate through the elements of the string as well 
     a[i] = new Character(t.charAt(i)); 
    } 

    for (int v = 0; v<l; v++){ 
    /*set rel to empty string so that you can add it BEFORE the first element of the array and then afterwards change it to a comma 
    this prevents you from having an extra comma at the end of your list.   */ 

     ret += rel; 
     ret += a[v]; 
     rel = ","; 
    } 
    System.out.println(ret); 
0
String text = "mydata"; 
char[] arrayText = text.toCharArray(); 
char[] arrayNew = new char[arrayText.length*2]; 
for(int i = 0, j = 0; i < arrayText.length; i++, j+=2){ 
    arrayNew[j] = arrayText[i]; 
    arrayNew[j+1] = ','; 
} 
String stringArray = new String(arrayNew); 
System.out.println(stringArray); 

結果

m,y,d,a,t,a, 
関連する問題