我正在创建一个IRC机器人,该机器人抓取Twitter链接并将文本发送到该频道。这是我的代码:
if (messageIC.contains("https://twitter.com/") && messageIC.contains("/status/")) {
try {
String tweeter = message.substring(20);
String[] tweety = tweeter.split(" ");
String tweety1 = tweety[0];
String url = "https://twitter.com/" + tweety1;
Document doc = Jsoup.connect(url).get();
Element 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);
}
}
Run Code Online (Sandbox Code Playgroud)
如果用户仅发送链接,或者即使用户在链接后键入了某些内容,此方法也可以使用。但是,如果用户在链接之前输入某些内容(例如“ blahblahblah http://www.twitter.com/user/status/xxxx ”),则该方法将无效,因为它将立即开始捕获,而不是在twitter.com之后。
有没有办法仅在twitter.com之后抓取子字符串?
您可以使用indexOf和substring。首先通过获取的索引来获得链接的开始"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);
Run Code Online (Sandbox Code Playgroud)
另一种简单的方法是split按空间检查所有内容,并检查它们是否符合要求:
String[] words = message.split(" ");
for (String word : words) {
if (word.startsWith("https://twitter.com/")) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11686 次 |
| 最近记录: |