6

我有以下问题,我有一个这样的字符串数组

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

我的目的是创建另一个这样的数组

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

问题是,如果我尝试使用循环创建数组

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

如果我使用这样的循环,我会收到“无效的 unicode 错误”

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

我得到这个数组

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

如果我使用这个循环

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

我得到这个数组

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

有谁知道我该怎么做?

谢谢

4

6 回答 6

7

您必须将字符串解析为十六进制整数,然后转换为chars:

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);
}
于 2013-06-20T09:14:49.507 回答
1

\uAAAA是文字,而不是具有五个字符的字符串。所以我们不能用连接来创建它。它一个字符。

于 2013-06-20T09:12:27.397 回答
0

\角色需要转义。

所以,做myNewArray[i] = "\\u" + myArray[i]其实就是你想做的。

尝试打印它以解决问题。

于 2013-06-20T09:13:06.223 回答
0

我实际上无法解决您的问题,但我可以告诉您以下内容:您的第一种方法尝试将 unicode 字符串“\u”(在您的情况下为空 <=> 无效)与非 unicode 字符串连接。您的第二种方法实际上是正确的。System.out.println( "\u" + "AAAA" ) 应该打印 \uAAAA 结果可以说您的代码是正确的,我的建议是在您的运行时环境/IDE 中搜索编码选项。

于 2013-06-20T09:24:44.470 回答
0

您可以复制并粘贴以下程序..我测试了代码..它工作正常

公共类主要{

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

}

于 2013-06-20T09:26:54.233 回答
-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];

}
于 2013-06-20T09:14:06.367 回答