【问题标题】:How to substring a string to the second dot (.) in Java?如何在Java中将字符串子串到第二个点(。)?
【发布时间】:2012-07-19 17:53:13
【问题描述】:

我有一个字符串,它有许多由点 (.) 分隔的段,如下所示:

codes.FIFA.buf.OT.1207.2206.idu


我只想在第二个点之前得到一个子字符串,比如codes.FIFA

如何在第二个点之前进行子串?

【问题讨论】:

    标签: java regex string substring


    【解决方案1】:

    这似乎是最简单的解决方案:

    String[] split = "codes.FIFA.buf.OT.1207.2206.idu".split("\\.");
    System.out.println(split[0] + "." + split[1]);
    

    【讨论】:

      【解决方案2】:

      只要找到第一个点,然后从那里找到第二个:

      String input = "codes.FIFA.buf.OT.1207.2206.idu";
      int dot1 = input.indexOf(".");
      int dot2 = input.indexOf(".", dot1 + 1);
      String substr = input.substring(0, dot2);
      

      当然,如果没有找到点,您可能希望在其中添加错误检查。

      【讨论】:

      • 你应该使用input.substring(0, dot2),否则你会得到codes.FIF
      • 你应该添加一些检查是否存在至少两个点,否则你会从 indexOf 中得到 -1 并且 substring 会抛出非法参数
      • @guido:我确实在回答中指定了这一点。
      【解决方案3】:

      我只是把它分成三部分,然后再加入前两部分:

      String[] parts = string.split("\\.", 3);
      String front = parts[0]+"."+parts[1];
      String back = parts[2];
      

      这可能需要一些错误检查,如果它可以少于两个点,或者以一个点开头,等等。

      【讨论】:

        【解决方案4】:

        这样的事情可以解决问题:

        String[] yourArray = yourDotString.split(".");
        String firstTwoSubstrings = yourArray[0] + "." + yourArray[1];
        

        变量 firstTwoSubstrings 将包含第二个“.”之前的所有内容。请注意,如果少于两个“.”,这将导致异常。在你的字符串中。

        希望这会有所帮助!

        【讨论】:

          【解决方案5】:
           Matcher m = Pattern.compile("^(.*?[.].*?)[.].*")
                              .matcher("codes.FIFA.buf.OT.1207.2206.idu");
           if (m.matches()) {
                return m.group(1);
           }
          

          http://ideone.com/N6m8a

          【讨论】:

          • 如果我只想从这个字符串返回“buf”,代码是什么?
          猜你喜欢
          • 2020-02-14
          • 1970-01-01
          • 2011-02-05
          • 1970-01-01
          • 2018-12-13
          • 2018-04-23
          • 1970-01-01
          • 2013-10-02
          • 1970-01-01
          相关资源
          最近更新 更多