【问题标题】:How would I search a certain word after a character in java?我如何在java中的一个字符之后搜索某个单词?
【发布时间】:2015-05-08 07:27:45
【问题描述】:

所以我正在做一些 cw,我想在一个字符串中搜索主题标签“#”之后的单词。

我该怎么做呢? 例如,字符串是“Hello World #me”?我将如何返回“我”这个词?

亲切的问候

【问题讨论】:

  • 我建议使用正则表达式。
  • 请发布您现有的代码,您尝试了什么?

标签: java string search substring


【解决方案1】:

使用 regex 并准备 Matcher 以迭代方式查找主题标签

String input = "Hello #World! #Me";

Pattern pattern = Pattern.compile("#(\\S+)");
Matcher matcher = pattern.matcher(input);

while (matcher.find()) {
    System.out.println(matcher.group(1));
}

输出:

World!
Me

【讨论】:

    【解决方案2】:

    根据该字符拆分字符串

    String []splittedString=inputString.split("#");
    System.out.println(splittedString[1]); 
    

    所以对于输入字符串

    Hello World #me'
    

    输出

    me
    

    【讨论】:

    • 他们只想要 # 之后的第一个单词,而不是 hash 之后的所有内容!
    • ArrayIndexOutOfBoundException 如果输入没有任何#hashtags。
    【解决方案3】:

    使用这个

    example.substring(example.indexOf("#") + 1);
    

    【讨论】:

    • 这将返回主题标签 + 字符串的其余部分;例如“#World!你好吗?” “Hello #World!你好吗?”
    【解决方案4】:

    使用正则表达式:

    // Matches a string of word characters preceded by a '#'
    Pattern p = Pattern.compile("(?<=#)\\w*");
    Matcher m = p.matcher("Hello World #me");
    String hashtag = "";
    if(m.find())
    {
        hashtag = m.group(); //me
    }
    

    【讨论】:

    • 您可以使用while 收集所有主题标签。此外,使用\w+ 将仅排除#
    【解决方案5】:

    那么约翰,让我猜猜。你是华威大学计算机科学专业的学生。给你,

    String s = "hello #yolo blaaa";
               if(s.contains("#")){
                        int hash = s.indexOf("#") - 1;
                        s = s.substring(hash);
                        int space = s.indexOf(' ');
                        s = s.substring(space);
               }
    

    如果您不想包含 #,请删除 -1

    【讨论】:

    • 这可能会失败。输入不能包含任何#hashtags
    • 再想一想。 s.substring(space) 会返回什么?
    • 主题标签后找到的第一个空格的索引存储在空间中,这会创建一个从主题标签到单词末尾的字符串。我相信我知道他正在做的课程以及是否就是这样,那么它后面总是有一个空格,所以为了简单起见可以做出这个假设。
    • 好吧,让我们假设您的假设是正确的。你仍然犯了两个严重的错误。我应该把豆子洒出来吗?我想如果你能弄清楚:)
    • 撒豆子,我什么都没看到。
    【解决方案6】:

    一个简单的方法是使用indexOf,然后你应该使用重载的indexOfsubString

    EG:

     String myString = originalString.substring(originalString.indexOf("#"),originalString.indexOf(" "),originalString.indexOf("#"));
    

    请注意,这可能会抛出越界错误,即未找到字符。阅读 java 文档链接以详细了解这是做什么的。

    【讨论】:

      猜你喜欢
      • 2013-09-17
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 2011-04-21
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      相关资源
      最近更新 更多