首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用BufferReader或其他方法读取固定长度字符?

如何使用BufferReader或其他方法读取固定长度字符?
EN

Stack Overflow用户
提问于 2013-03-20 08:55:47
回答 4查看 1.2K关注 0票数 1

如果我使用BufferReader读取一行,就可以得到一行的字符串。守则是:

代码语言:javascript
复制
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的内容如下:

代码语言:javascript
复制
一二三四1234

所以。运行代码的结果是:

代码语言:javascript
复制
8 一二

从结果来看,我知道字符串中的汉字的长度是1,而不是2。

所以如果我使用line.substring(0,2),我会得到两个汉字"一二“。但我希望,line.substring(0,2)的结果是"一".

我的意思是,在我看来,"一二三四1234“的长度是12,而不是8。我可以使用子字符串(0,2)提取固定长度的字符。

提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2013-03-20 09:03:59

从结果来看,我知道字符串中的汉字的长度是1,而不是2。

对,所以每个符号都是一个字符,所以这些"一二三四1234“字符串的长度是8。

为什么是12岁?

我的意思是,在我看来,"一二三四1234“的长度是12,而不是8。我可以使用子字符串(0,2)提取固定长度的字符。

如果您知道所需字符的索引,则可以使用下面的代码:

代码语言:javascript
复制
String s = "一二三四1234";
char c = s.charAt(0);

因为方法subString从索引0到2创建了一个新的字符串

票数 1
EN

Stack Overflow用户

发布于 2013-03-20 09:03:09

如果我使用line.substring(0,2),我会得到两个汉字"一二“。

所以你有两个角色。这就是你要的。索引0和1处的两个字符。

但是我希望,line.substring(0,2)的结果是"一“。

如果你只想要一个角色,就要求一个角色。索引0处的字符。例如,line.substring(0,1)

票数 0
EN

Stack Overflow用户

发布于 2013-03-20 09:10:04

Java使用unicode作为内部字符集,因此任何char类型都是unicode.And java.lang.String由字符组成。

当您从读取器获得字符串时,文件的字节内容已经根据文件的编码被转换为字符。

line.substring(0,2)生成一个新的字符串,它将返回行的两个字符,这就是您已经得到的!

我猜“在我眼中长度”的意思是指在像UltraEdit这样的文本编辑器中,也许编辑器只是显示文件中字节的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15519016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档