gpt4 book ai didi

java - 如何使用子字符串从 bufferedreader 中提取文本

转载 作者:行者123 更新时间:2023-12-02 00:04:30 24 4
gpt4 key购买 nike

我正在尝试使用子字符串和 bufferedreader 提取两个标签之间的文本,但出现了 indexoutofbounds 异常。使用 if 语句是因为我正在解析 5 个网页,并且我想从每个网页读取文本,下面是我的代码:

    public static List<WebPage> readRawTextFile(Context ctx, int resId) {
InputStream inputStream = ctx.getResources().openRawResource(
R.raw.pages);

InputStreamReader inputreader = new InputStreamReader(inputStream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
StringBuilder text = new StringBuilder();
String txt1 = text.toString();
try {
int count = 0;
while ((line = buffreader.readLine()) != null) {

if (line.length() == 0) {
int sURL = line.indexOf("<!--");
int eURL = line.indexOf("-->");
String newSub = txt1.substring(txt1.indexOf(sURL) + 1,
txt1.indexOf("\""));
System.out.println(newSub);
}

最佳答案

看看这段代码:

if (line.length() == 0) {
int sURL = line.indexOf("<!--");
int eURL = line.indexOf("-->");
String newSub = txt1.substring(txt1.indexOf(sURL) + 1,
txt1.indexOf("\""));
...
}

如果该行为空,您将进入该 block 。所以sURLeURL肯定是-1。

然后您使用 txt1.indexOf(-1),这从一开始就很奇怪(为什么要使用 indexOf 并传入索引?) -我强烈怀疑这里的两个 indexOf 值都将是 -1,所以你会得到:

String newSub = txt1.substring(0, -1);

...这将会失败。根本不清楚为什么您在这里使用 txt1.substring 而不是 line.substring

基本上,我认为您的代码存在一堆问题。您应该非常仔细地查看每一行,并对其进行更改,直到它真正有意义为止。然后添加单元测试...

关于java - 如何使用子字符串从 bufferedreader 中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14148599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com