用escape java创建字符串

时间:2013-06-20 09:07:09

标签: java string escaping concatenation

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

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

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

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

问题是如果我尝试使用循环

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

我收到&#34;无效的unicode错误&#34;,如果我使用这样的循环

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"};

有谁知道我该怎么做?

由于

6 个答案:

答案 0 :(得分:7)

您必须将字符串解析为十六进制整数,然后转换为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);
}

答案 1 :(得分:1)

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

答案 2 :(得分:0)

\字符需要转义。

因此,做myNewArray[i] = "\\u" + myArray[i]实际上就是你想做的事。

尝试打印它以清除此事。

答案 3 :(得分:0)

我实际上无法解决你的问题,但我可以告诉你以下内容: 你的第一个方法是尝试使用nonunicode字符串连接unicode字符串“\ u”(在你的情况下为空&lt; =&gt;无效)。你的第二种方法实际上是对的。 System.out.println(“\ u”+“AAAA”)应打印\ uAAAA 因此可以说你的代码是正确的,我的建议是在你的运行环境/ IDE中搜索编码选项。

答案 4 :(得分:0)

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

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

}

答案 5 :(得分:-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];

}