4
我正在寫一個Xor方法,它通過向其字符添加(作爲xor操作)隨機值來使一些字符串ecnrypts。結果應該看起來像帶有加密字符十六進制值的字符串。使用Java 8流將字符串分隔爲字符串(lambdas)
實施例:
「你好世界」=> 「0006F 00046 00066 00076 0004D 0007F 00047 0007D 00062 0006E」
的代碼:
StringBuilder sb = new StringBuilder();
inputText.chars() // get char stream
.filter(c -> c != ' ') // remove spaces
.map(c -> c^random.nextInt(randBound)) // do xor for each char
.boxed() // to Integer stream
.map(i -> String.format("%05X ", i & 0xFFFFF)) // to Hex String values
.forEach(sb::append);
if (sb.length() > 0)
sb.deleteCharAt(sb.length() - 1);
return sb.toString();
正如你所看到的,我已經將結果格式化爲"%05X "
,所以我字符串末尾有不需要的空間。並且需要使用sb.deleteCharAt(sb.length() - 1);
。
如何在流中直接格式化正確的結果?