我在尝试从字符串中删除子序列\u000
时遇到了一些问题。
首先,我通过String str = new String(bytes, "UTF8");
将文件中的bytes []读入字符串,然后我得到等于str
的{{1}},这意味着\u0004Word
。 4Word
是单词4
的长度。所以现在我需要将它转换为常规Word
。 4Words
,replaceAll("\u000", "");
等不起作用。怎么做?
replaceALL("\\\\u000", "")
UPDATE!
首先,我用void FillingStorage() throws Exception{
Path path = Paths.get(System.getProperty("db.file"));//that's my file
byte[] data = Files.readAllBytes(path);
String str = new String(data, "UTF8");
System.out.println(str);
String res = str.replaceAll("I don't know what to write here cos nothing I've tried works");
return;
}
填充我的HashMap。然后我把它作为字节写在文件中。
因此,当我尝试将其转换回字符串并打印时,我看到:Key -> Value and Key1 -> Value1
而不是Key Value Key1 Value1
。但令人惊讶的是,如果你查看我打印的字符串,你会看到像这样的字符:3Key 5Value 4Key1 6Value1
所以看起来我的字符串包含这些数字,但java无法打印它们。
这是我在文件中写入字节的方式:
\u0003Key \u0005Value etc...
答案 0 :(得分:1)
首先,您的要求不会要求使用正则表达式,因此您应该使用replace()
代替。
其次,\uxxxx
是Java中的字符文字语法,因此您实际上并不清楚实际上是否有字符\
u
0
0
{你的字符串中的{1}};你的字节数组只是以单字节等于4开始,这就是字符串长度,这更合乎逻辑。
在这种情况下,您应该在转换为0
时使用接受String
和offset
参数的构造函数丢弃数组中的初始字节。
如果您确实在字符串中包含了所有这些字符,那么只需使用len
来删除最初的6个字符应该就是您所需要的。