我正在使用Java中的Twitter類型程序,其中正文是正在發送的推文。我正在嘗試使用indexOf來查找hashtag的位置和空格的位置,以便我可以通過串聯打印出所有hashtags,並且只需調用一次訪問器即可。當我運行程序我得到一個出界錯誤的行:IndexOf在整個字符串中移動不會識別字符(Java)
allHashtags+=bodyTemp.substring(position, space+1)+" ";
我已經測試過的子字符串,這個問題似乎涉及到了「位置」變量,但我不知道如何解決它。這裏是我的代碼:
public String getAllHashtags() {
int indexFrom=0;
int position=0;
String allHashtags="";
String bodyTemp=body;
while(position>-1) {
position=bodyTemp.indexOf("#");
int space=bodyTemp.indexOf(" ");
allHashtags+=bodyTemp.substring(position, space+1)+" ";
bodyTemp=bodyTemp.substring(space+1);
}
return allHashtags;
}
例如身體: 「你好#world怎麼樣#你」
allHashtags = 「#world#你」
如果有什麼不清楚的代碼/我的解釋,請讓我知道,我會盡力澄清它。感謝您的幫助!
爲什麼你不只是使用正則表達式?你是否想要連接到'allHashtags'而不是僅僅覆蓋它?爲什麼使用'bodyTemp = bodyTemp.substring(space + 1);'而不是隻將第二個參數提供給'indexOf'? –
那麼,如果其中一個方法調用indexOf()返回-1,因爲該字符串不包含「#」也不包含空格「」,那麼你將嘗試從一個或一直到一個負位置得到一個子字符串。 – JKostikiadis
@Andy Turner我不使用rejex,因爲我不被允許。是的,我試圖連接(我只是更新了代碼,因爲我沒有複製正確的行)。我不確定你最後一個問題的含義。 – pyr0