我有以下问题,我有一个像这样的字符串数组
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"};
有谁知道我该怎么做?
由于
答案 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];
}