如何在java中的特定单词后获取子字符串

时间:2015-06-05 22:26:55

标签: java

我正在创建一个IRC机器人,它抓取Twitter链接并将文本发送到频道。这是我的代码:




  if(messageIC.contains(“https://twitter.com/”)&& messageIC.contains(“/ status /“)){
试试{
 String tweeter = message.substring(20);
 String [] tweety = tweeter.split(“”);
字符串tweety1 = tweety [0];
 String url =“https://twitter.com/”+ tweety1;
 Document doc = Jsoup.connect(url).get();
元素tweetText = doc.select(“p.js-tweet-text.tweet-text”)。first();
 sendMessage(channel,“Twitter:”+ tweetText.text());
 } catch(IOException ex){
 Logger.getLogger(Ampersand.class.getName())。log(Level.SEVERE,null,ex);
 }
}
  




如果用户仅发送链接,或者即使用户在链接后输入了某些内容,这也适用。但是如果用户在链接之前输入内容,它就不起作用,例如“blahblahblah http:/ /www.twitter.com/user/status/xxxx “因为它会立即开始抓取而不是在twitter.com之后。





有没有办法在twitter.com?

之后才抓住子串;

3 个答案:

答案 0 :(得分:3)

您可以使用indexOfsubstring。首先通过获取"https://twitter.com/"的索引来获取链接的开头。然后在链接开始后查找空格,如果存在链接在那里结束,否则它在message的末尾结束。然后我们可以使用substring方法获取链接:

int startIndex = message.indexOf("https://twitter.com/");
int endIndex = message.indexOf(" ", startIndex);
if (endIndex == -1) {
    endIndex = message.length();
}
String link = message.substring(startIndex, endIndex);

另一种简单方法,split按空格划分所有内容,并检查它们是否符合要求:

String[] words = message.split(" ");
for (String word : words) {
    if (word.startsWith("https://twitter.com/")) {
        // ...
    }
}

答案 1 :(得分:1)

您可以使用字符串indexOf(String str)方法查找http://etc的位置。然后,您可以使用indexOf(String str, int fromIndex)方法查找URL后面的第一个空格。最后,将substring(int beginIndex, int endIndex)与这两个值一起使用。

我不会给你完整的代码;你将通过自己写作来学习。

答案 2 :(得分:-1)

对完整字符串使用字符串indexOf(String s)方法。然后将int添加到目标String的长度(在本例中为"www.twitter.com")并将其用作子字符串的起始索引。

String s = "http://www.twitter.com/user/status/xxxx";
String target = "www.twitter.com";
int index = s.indexOf(target);
int subIndex = index + target.length();
System.out.print(s.substring(subIndex));
相关问题