2013-06-20 10 views
6

Ho il seguente problema, ho un array di stringhe come quellaCreazione di stringa con escape java

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

e il mio scopo è quello di creare un altro array come quello

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

Il problema è che se cerco di creare l'array usando un ciclo

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

ricevo un "errore unicode non valido", se uso un ciclo del genere

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

ottengo questo array

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

E se uso questo ciclo

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

ottengo questo array

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

Qualcuno sa come posso farlo ?

Grazie

+0

magari provare concatenando personaggi come indvidual 'myNewArray [i] = '\' + ('u' + myArray [i]) ; ' –

+0

non accetta il carattere '\', e se utilizzo '\\' ho questo risultato: String myNewArray = {" \\ uAAAA "," \\ uBBBB "," \\ uCCCC "}; –

risposta

7

Bisogna analizzare le stringhe come numeri interi esadecimali e poi convertire in char s:

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

funziona! grazie mille! –

1

\uAAAA è un letterale, non è una stringa con cinque caratteri. Quindi non possiamo crearlo con la concatenazione. È è un carattere.

0

Il carattere \ deve essere sfuggito.

Pertanto, fare myNewArray[i] = "\\u" + myArray[i] è in realtà ciò che si desidera fare.

Provare a stampare per risolvere il problema.

+1

No, non lo è. Vuole i caratteri unicode nella matrice, non le stringhe di tipo esadecimale con un prefisso "\\ u". –

-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

La matrice di destinazione deve includere caratteri unicode (nelle stringhe). Questo è qualcosa di diverso –

+0

questo è il mio secondo ciclo –

+0

@DanieleMilani Non c'è bisogno che io prenda il tuo codice e incolli qui. –

0

Io in realtà non riesce a risolvere il prob, ma vi posso dire quanto segue: Il tuo primo approccio a conciliare una stringa unicode "\ u" (nel tuo caso vuoto < => non valido) con una stringa nonunicode. Il tuo secondo approccio è in realtà corretto. System.out.println ("\ u" + "AAAA") deve stampare \ uAAAA Di conseguenza, si può dire che il codice sia corretto, il mio suggerimento è di cercare le opzioni di codifica nel proprio ambiente di runtime/IDE.

0

È sufficiente copiare e incollare il programma in basso .. ho testato il codice ..e si sta lavorando bene

public class principale {

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

}