如果我使用BufferReader读取一行,就可以得到一行的字符串。守则是:
FileInputStream fs = new FileInputStream("E:\\tmp\\aaa.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fs));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line.length() + " " +line.substring(0, 2);
}aaa.txt的内容如下:
一二三四1234所以。运行代码的结果是:
8 一二从结果来看,我知道字符串中的汉字的长度是1,而不是2。
所以如果我使用line.substring(0,2),我会得到两个汉字"一二“。但我希望,line.substring(0,2)的结果是"一".。
我的意思是,在我看来,"一二三四1234“的长度是12,而不是8。我可以使用子字符串(0,2)提取固定长度的字符。
提前谢谢。
发布于 2013-03-20 09:10:04
Java使用unicode作为内部字符集,因此任何char类型都是unicode.And java.lang.String由字符组成。
当您从读取器获得字符串时,文件的字节内容已经根据文件的编码被转换为字符。
line.substring(0,2)生成一个新的字符串,它将返回行的两个字符,这就是您已经得到的!
我猜“在我眼中长度”的意思是指在像UltraEdit这样的文本编辑器中,也许编辑器只是显示文件中字节的位置。
https://stackoverflow.com/questions/15519016
复制相似问题