有没有一种更有效的方法来搜索句子中的关键字而无需在编译前就知道该关键字?

托马斯·沃克

我是CS的二年级学生,我编写了一个程序,该程序连接到IRC客户端并嗅探线路,等待用户询问“ @TWITTERHANDLE发什么推文?”

该程序会嗅探关键字“ tweeting”,然后运行一个方法,该方法将使用整个输入行查找twitter句柄。

问题是,如果在编译之前我知道该关键字是什么,我知道如何查找该关键字,但是在这种情况下,该关键字可以是任何Twitter句柄,因此我不确定搜索哪种最佳方法这将是。

我尝试了以下操作:inputLine.substring(i + 1,inputLine.indexOf(“”))); 但是它将使用inputLine中的第一个空格作为第二个索引,从而给我IndexOutOfBounds异常。

输入行的示例如下

:TWalk!46774664@gateway/web/freenode/ip.11.222.33.444 PRIVMSG #irchacks :What is @TWalkBot tweeting about right now?

这就是我拥有的代码,它将实际抓住twitter句柄。

/** This method parses the inputLine and returns the Twitter Handle */
    public String getTwitterHandle(String inputLine) {

        boolean firstAt = true;
        char currentChar, tempChar;

        for (int i = 0; i < inputLine.length(); i++) {

            currentChar = inputLine.charAt(i);

            if (currentChar == '@' && firstAt == false) {

                for (int j = i; j < inputLine.length(); j++) {

                    tempChar = inputLine.charAt(j);

                    if (tempChar == ' ') {

                        return inputLine.substring(i + 1, j);

                    }

                }

            }

            else if (currentChar == '@' && firstAt == true) {

                firstAt = false;
            }

        }

        return "User Not Found";
    }

尽管此代码有效,但我想知道是否有更有效的方法来完成此操作,如果可以,我应该如何看待更改?

谢谢,

汤玛士

阿米斯·库玛(Amith Kumar)

是的,您可以使用REGEX使其变得简单而准确:

public class RegExPattern {

    public static void main(String[] args) {
        String test1 = "What is @TWITTERHANDLE tweeting about?";
        String test2 = ":TWalk!46774664@gateway/web/freenode/ip.11.222.33.444 PRIVMSG #irchacks :What is @TWalkBot tweeting about right now?";

        Pattern pattern = Pattern.compile(".*@(\\w+).*tweeting.*");
        Matcher matcher = pattern.matcher(test1);
        if(matcher.find()){
            System.out.println(matcher.group(1)); //Sysouts TWITTERHANDLE
        }

        matcher = pattern.matcher(test2);
        if(matcher.find()){
            System.out.println(matcher.group(1)); //Sysouts TWalkBot
        }
    }
}

REGEX上的说明

.*@(\\w+).*tweeting.*

.*@-贪婪模式会匹配字符串,直到最后出现@符号

(\\w+)-创建第1组,然后是@符号,这是我们的目标,查找长度为1或更大的单词字符

.*tweeting.*-寻找第12组第1组之后出现推文的单词.*pattern再次用于说明第1组和发推之间的任何字符,第二个用于发推后的任何尾随字符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有更有效的方法来存储关键字参数?

有没有一种方法可以在JSoup的搜索栏中搜索多个关键字?

有没有一种方法可以从ArrayBuffer创建TypedArray,而无需在Javascript中使用new关键字?

有没有一种方法可以让Chrome在使用关键字搜索时使用%20而不是+来代替空格?

有没有一种方法可以将关键字用作枚举中的标识符?

有没有一种方法可以从python中的字符串中找到关键字

有没有一种优雅的方法可以在 python 中同时解压和索引关键字参数?

有没有一种方法可以更改在日志文件中运行的关键字的颜色,即使该关键字成功了也可以吗?

在字符串熊猫列中查找多个关键字的更有效方法

有没有一种方法可以避免在kwargs中使用关键字

有没有一种更有效的方法来在Access中存储对象容器?

有没有一种方法可以使用LIMIT关键字在Postgres中获取一系列记录

有没有一种有效的方法来搜索非常大的文件中的字典?

有没有一种方法可以分隔“内联”关键字的两种含义(ODR松弛与函数代码内联)

有没有一种方法可以通过内置的type()函数将关键字参数传递给__init_subclass__?

有没有一种方法可以在不使用骆驼的.bean关键字的情况下自动布线Bean?

试图找到一种更有效的方法来进行多次替换,而无需在 jQuery 中重复相同的代码

有没有一种比Python中的list.sort()更有效的方法来对列表进行排序?

有没有一种更有效的方法来枚举python或R中离散随机变量的每个可能结果的概率?

有效地搜索字符串中的关键字

当关键字是多个单词时,可以有效地搜索关键字

Java中有没有类似于C#的'AS'关键字的关键字

尝试找到一种巧妙的方法来查找给定字符串中的关键字索引

python中的“in”关键字是如何工作的?有没有更快的方法?

在匿名类的方法中添加'final'关键字是否有效?

“ inline”关键字何时在C中有效?

哪种JSON对关键字“ anyOf”有效

有没有一种有效的方法来连接golang模板中的字符串

有没有一种有效的方法来计算golang中的执行时间?