我正在嘗試從 API 獲取信息,但我只是不知道如何使用 String.indexOf 從這一行獲取信息。我是自學成才,從來沒有達到使用indexOf的地步,直到此時,我嘗試在網(wǎng)上查找有關如何使用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條經(jīng)驗 獲得超7個贊
看起來你的線條看起來像這樣:
"id"="1", "name" = "foo"
解析 id 時,您將檢索 (0) 的開頭"id"
,并正確添加子字符串 (4) 的長度。然后,從那里開始,通過搜索下一個字符的索引來檢索實際 ID 值的開頭"
。
現(xiàn)在,您應該對名稱執(zhí)行相同的操作。子"name"
字符串的長度為 6 個字符。因此,在計算 時應添加 6 而不是 2 startOfName
:
int startOfName = line.indexOf("\"name\"") + 6;
然后,因為實際名稱僅在下一個"
字符之后開始:
int startOfValueName = line.indexOf("\"", startOfName) + 1;
同樣相當于您對 ID 所做的操作。
添加回答
舉報
0/150
提交
取消