我导入了一个文件并将其转换为名为 readFile 的字符串。该文件包含两行:
qwertyuiop00%
qwertyuiop
我已经使用以下方法从字符串中提取了“00”: 字符串编号 = readFile.substring(11, 13);
我现在想提取“qwertyuiop”中的“ert”和“uio” 当我尝试使用与第一个相同的方法时,如下所示:
String e = readFile.substring(16, 19);
String u = readFile.substring(20, 23);
并尝试使用:
System.out.println(e + "and" + u);
它说字符串索引超出范围。
我该如何解决这个问题? 是因为我想从字符串中提取的接下来的两个单词在第二行吗? 如果是这样,我如何只提取第二行? 我想保持基本,谢谢。
更新: 结果只有文件的第一行被读取,有谁知道如何使它读取两行?
最佳答案
如果您计算每个字符串的字符总数,它们会比您输入的索引多。
qwertuiop00% 是 13 个字符。对字符串调用 .length()
方法来验证长度是否是您期望的长度。
我会在之前添加以下内容进行调试:
System.out.println(readFile);
System.out.println(readFile.length());
注意:
qwertyuiop00% qwertyuiop
为 24 个字符,因为空格也算作一个字符。当然,除非你没有 23 个字符的空间,并且你的索引是 0 到 22
注2:
我要求解析器代码,因为我怀疑您使用通常的代码,如下所示:
while ((line = reader.readLine()) != null)
您需要将这些行连接成一个字符串(尽管这不是最好的方法)。
参见:How do I create a Java string from the contents of a file?
关于java - Java中如何从字符串中提取单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26508762/