【问题标题】:java search for a particular word in a stringjava在字符串中搜索特定单词
【发布时间】:2012-09-06 06:01:31
【问题描述】:

我有这样的字符串:

This.is.a.great.place.too.work.

(或)

This/is/a/great/place/too/work/

我想看看这个字符串是否有“地方”这个词。

如果它们是我使用的字符串中的单词 contains("place")。 因为这是我尝试拆分的所有一个字符串,但它给出了语法错误。 请告诉我如何获得它?

string.contains("place") works
String.split(".").contains("place")   Error

【问题讨论】:

  • “它给出了语法错误” 复制/粘贴错误作为对问题的编辑。使用代码格式。为此,请选择示例并单击消息发布/编辑表单上方的{} 按钮。

标签: java string


【解决方案1】:

使用string.split("\\.").contains("place") 这应该可以。 .(dot) 是正则表达式中的保留字符,您需要使用 \\. 对其进行转义。

【讨论】:

    【解决方案2】:

    尝试用“//”分割

        String string = "This.is.a.great.place.too.work.";
        System.out.println(string.split("\\.")[0]);
    

    【讨论】:

      【解决方案3】:

      就这样试试吧......

      String s = "This/is/a/great/place/too/work/";
      String ss = "This.is.a.great.place.too.work";
      
      System.out.println(s.contains("place"));
      System.out.println(ss.contains("place"));
      

      【讨论】:

        【解决方案4】:

        你可以使用

        String str = "This.is.a.great.place.too.work.";
        boolean exists = str.contains("place");
        

        这会检查以在字符串中找到单词 place,如果找到则返回 true,否则返回 false

        【讨论】:

        • mine 是这样的字符串:This.is.a.great.place.too.work。所以这不会在没有拆分的情况下工作
        【解决方案5】:

        您无需拆分字符串即可使用包含方法。

        string str = "This.is.a.great.place.too.work.";
        
        boolean found = str.contains("substring"); // should return true or false
        

        您可以使用以下替代方法:

        str.indexOf("substring") > 0判断子串是否在字符串中

        要在一行中执行此操作,您可以执行以下操作:

        Arrays.toString(str.split(".")).Contains("substring")
        

        【讨论】:

          【解决方案6】:

          除了使用我认为最好的.contains 方法之外,您似乎还想构建一个数据结构并通过它进行搜索。要执行此类操作,您需要执行以下操作:

          String str = "This.is.a.great.place.too.work.";
          String[] splitWords = str.split("\\.");  //The . is a special character in regex language, thus needs to be escaped. Alternatively you could use \\W which will split the string where ever it finds a character which is not a letter, digit or underscore.
          List<String> words = Arrays.asList(splitWords);
          System.out.println(words.contains("place"));
          

          或者,您可以像这样使用indexOf(String str) 方法:

          if (str.indexOf("place") > 0)
          {
              System.out.println("String Exists");
          }
          

          【讨论】:

            【解决方案7】:

            试试这个

            string.split(pattern);
            String[] strings = s.split(".")
            

            Split 将给出基于参数拆分的字符串数组。

            你不能在字符串数组上应用包含,而是使用以下

            boolean flag = string.contains("required_pattern");
            

            【讨论】:

            • 不能拆分和包含在同一行吗?>
            • 不,split 将提供字符串数组作为输出。 contains() 只能用于字符串
            • 你可以做类似 Arrays.toString(str.split(".")).Contains("substring") 但它看起来真的很难看。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-23
            • 1970-01-01
            • 2011-12-27
            • 2018-07-17
            • 2019-01-25
            相关资源
            最近更新 更多