我正在使用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