显然当我使用S.split(" ")
并且我的代码文件中有" "
(空格)时,它会被忽略。我想知道是否有办法克服这个问题。我想到的并用以下代码编写并不适用,但它适用于其他所有角色。
String codeArr[] =code.split("\\r?\\n");
int k=0;
while (k<codeArr.length-1)
{
String[] tmpCode=codeArr[k].split(" ");
if (tmpCode.length!=2)
HuffCodeToCh.put(tmpCode[0]," ");
else
HuffCodeToCh.put(tmpCode[1],tmpCode[0]);
k+=1;
}
我的输入属于以下类型(在文件中):
i 000
r 001
e 01
s 100
n 101
. 110000
" 110001
E 1100100
k 11001010
H 11001011
f 110011
t 1101
1110
a 111100
我想将字符及其二进制代码保存在hashMap中,如代码所示。但是我上面编写的代码并没有将" "
保存在hashmap中。我不知道如何解决它。
答案 0 :(得分:2)
试试这个:
codeArr[k].split(" (?=\\S)");
这样
x 100 -> {"x","100"}
100 -> {" ","100"}
11 -> {" ", "11"} (two spaces)
答案 1 :(得分:1)
String c = codeArr[k].substring(0, 1);
String b = codeArr[k].substring(2);
答案 2 :(得分:1)
具体来说,你的整个循环就是:
for (String line : code.split("\\r?\\n"))
HuffCodeToCh.put("" + line.charAt(0), line.substr(2));
在很大程度上不相关的说明中,您的变量HuffCodeToCh
不遵循Java命名约定,这强烈建议为类型保留初始大写。