使用拆分时如何处理空格字符

时间:2014-07-30 11:05:39

标签: java regex file split

显然当我使用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中。我不知道如何解决它。

3 个答案:

答案 0 :(得分:2)

试试这个:

codeArr[k].split(" (?=\\S)");

这样

x 100 -> {"x","100"}
  100 -> {" ","100"}
   11 -> {"  ", "11"} (two spaces)

答案 1 :(得分:1)

使用String.substring

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命名约定,这强烈建议为类型保留初始大写。