2013-06-20 23 views
6

Ben ooluşturma dize

String[] myArray = {"AAAA","BBBB","CCCC"}; 

gibi bir dize dizisi aşağıdaki sorun var ve amacım bu

String myNewArray = {"\uAAAA","\uBBBB","\uCCCC"}; 

sorun gibi başka dizi oluşturmaktır olması durumunda Ben bir döngü kullanarak diziyi oluşturmaya çalışın

for (int i=0; i<myArray.length; i++) { 
    myNewArray[i] = "\u" + myArray[i]; 
} 

böyle bir döngü kullanırsam, "Geçersiz unicode hata"

for (int i=0; i<myArray.length; i++) { 
    myNewArray[i] = "\\u" + myArray[i]; 
} 

bu dizide

String myNewArray = {"\\uAAAA","\\uBBBB","\\uCCCC"}; 

elde Ve bu döngü kullanırsanız

for (int i=0; i<myArray.length; i++) { 
    myNewArray[i] = "\\u" + myArray[i]; 
    myNewArray[i] = myNewArray[i].substring(1); 
} 

bu diziyi elde

String myNewArray = {"uAAAA","uBBBB","uCCCC"}; 

herkes bunu biliyor mu ?

Teşekkür

+0

belki olarak indvidual karakterleri bitiştirme deneyin 'myNewArray [i] = '\' (+ 'u + myArray [i]) ; –

+0

'\' kabul etmez ve '\\' kullanırsam bu çıktıya sahibim: String myNewArray = {"\\ uAAAA", "\\ uBBBB", "\\ uCCCC"}; –

cevap

7

Sen onaltılık tamsayı olarak dizeleri ayrıştırmak ve sonra char s dönüştürmek zorunda: Ben aslında prob çözemezler

String[] myArray = {"AAAA", "BBBB", "CCCC"}; 
String[] myNewArray = new String[myArray.length]; 
for (int i=0; i<myArray.length; i++) { 
    char c = (char) Integer.parseInt(myArray[i], 16); 
    myNewArray[i] = String.valueOf(c); 
} 
+0

işe yarıyor! çok teşekkürler! –

1

\uAAAA beş karakter ile bir değişmez değil, bir dize olduğunu. Bu yüzden birleştirme ile oluşturamayız. Bu , bir bir char.

0

\ karakter kaçtı gerekmektedir.

nedenle, myNewArray[i] = "\\u" + myArray[i] yapıyor sen ne yapmak istediğini aslında.

meseleyi çözmek için yazdırmak için deneyin.

+1

Hayır öyle değil. Dizide unicode karakterleri, "\\ u" önekine sahip onaltılık dizeleri değil. –

-2
String[] myArray = {"AAAA","BBBB","CCCC"}; 
String[] myNewArray = {"\uAAAA","\uBBBB","\uCCCC"}; 
     String we="\\u"; 
     for (int i=0; i<myArray.length; i++) { 
    myNewArray[i] = we + myArray[i]; 

} 
+0

Hedef dizi, unicode karakterleri içermelidir (dizelerde). Bu farklı bir şey var –

+0

bu benim ikinci döngüsü –

+0

@DanieleMilani Benim herhangi bir kod almak ve burada yapıştırmak için gerek yok. –

0

ama sana şu söyleyebilirim: İlk yaklaşım bir unicode dizgisi "\ u" (sizin durumunuzda boş bir => geçersiz) bir nonunicode dizgisi ile uyuşmaya zorlar. İkinci yaklaşımın aslında doğru. System.out.println ("\ u" + "AAAA") yazdırmanız gerekir \ uAAAA Sonuç olarak, kodunuzun doğru olduğunu söyleyebilirim, önerim çalışma zamanı ortamınızdaki/IDE'deki kodlama seçeneklerini aramaktır.

0

Aşağıdaki programı kopyalayıp yapıştırabilirsiniz .. kodu test ettiniz ..ve ince

genel sınıf Main {

static String a[]; 
private static String[] myNewArray; 

public static void main(String[] args) { 


    String[] myArray = {"AAAA", "BBBB", "CCCC"}; 
    myNewArray = new String[myArray.length]; 
    for (int i = 0; i < myArray.length; i++) { 
     myNewArray[i] = "\\u" + myArray[i]; 
    } 
    for (int i = 0; i < myArray.length; i++) { 
     System.out.println(myNewArray[i]); 
    } 
} 

} çalışmaktadır