为了账号安全,请及时绑定邮箱和手机立即绑定

使用indexOf从网站获取信息

使用indexOf从网站获取信息

猛跑小猪 2023-08-04 19:06:34
我正在尝试从 API 获取信息,但我只是不知道如何使用 String.indexOf 从这一行获取信息。我是自学成才,从来没有达到使用indexOf的地步,直到此时,我尝试在网上查找有关如何使用indexOf的教程,但我能找到的只是在字符串中查找特定字母,而不是只是从一行中获取一个字符串。我尝试多次更改indexOf的值但没有成功。ID 已正确设置,因为有人帮助我,但我想我还需要一个名字,但我不知道。URL url = new URL("https://api.mojang.com/users/profiles/minecraft/" + args[0]); //args[0] == name of playerURLConnection con = url.openConnection();InputStream isr =con.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(isr));String line;while ((line = br.readLine()) != null) {    int startOfID = line.indexOf("\"id\"") + 4;    int startOfValueID = line.indexOf("\"", startOfID) + 1;    int endOfValueID = line.indexOf("\"", startOfValueID);    // Figure out Name indexOf    int startOfName = line.indexOf("\"name\"") + 2;    int startOfValueName = line.indexOf("\"", startOfName);    int endOfValueName = line.indexOf("\"", startOfValueName);    Name = line.substring(startOfValueName, endOfValueName);    UUID = line.substring(startOfValueID, endOfValueID);    sender.sendMessage(Name + " | " + UUID); // ignore (debugging     purposes)    strUUIDCut = UUID.substring(0,8) + "-" + UUID.substring(8,12) + "-     " + UUID.substring(12,16) + "-" + UUID.substring(16,20) + "-" +     UUID.substring(20,32);}没有抛出任何错误。我希望从 API 中获得一个名称。无论是 3 个字母的名字还是 15 个字母的名字。
查看完整描述

1 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

看起来你的线条看起来像这样:

"id"="1", "name" = "foo"

解析 id 时,您将检索 (0) 的开头"id",并正确添加子字符串 (4) 的长度。然后,从那里开始,通过搜索下一个字符的索引来检索实际 ID 值的开头"

现在,您应该对名称执行相同的操作。子"name"字符串的长度为 6 个字符。因此,在计算 时应添加 6 而不是 2 startOfName

int startOfName = line.indexOf("\"name\"") + 6;

然后,因为实际名称仅在下一个"字符之后开始:

int startOfValueName = line.indexOf("\"", startOfName) + 1;

同样相当于您对 ID 所做的操作。


查看完整回答
反对 回复 2023-08-04
  • 1 回答
  • 0 关注
  • 63 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信