作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个 IRC 机器人,它可以抓取 Twitter 链接并将文本发送到 channel 。这是我的代码:
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);
}
}
如果用户只发送链接,或者即使用户在链接后输入了一些内容,这也会起作用。但如果用户在链接前键入内容,例如“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);
另一种简单的方法,拆分
所有内容并检查它们是否符合要求:
String[] words = message.split(" ");
for (String word : words) {
if (word.startsWith("https://twitter.com/")) {
// ...
}
}
关于java - 如何在java中的特定单词后获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30676719/
我是一名优秀的程序员,十分优秀!