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

标签 java

我正在创建一个 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 之后的子字符串?

最佳答案

您可以使用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);

另一种简单的方法,拆分所有内容并检查它们是否符合要求:

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

关于java - 如何在java中的特定单词后获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30676719/

相关文章:

java - 使用Java对象模仿Matlab结构

java - 字节数组到某种 Java/Scala 图像。性能考虑

java - 创建 javabean 时执行代码

java - 如果没有 java 对话,Aptana .js 文件将无法保存

java - 在 java 中传递数组时代码中的意外输出

Java配置Web应用程序的上下文根

java - 读取文本文件后如何创建数组

java - 从 JSP 发送文件到 Servlet

java - 预期的类或接口(interface)

java - 在从 Oracle 数据库存储数据期间管理 JAVA 堆大小