【问题标题】:How to split a String on the basis of a recurring substring?如何根据重复出现的子字符串拆分字符串?
【发布时间】:2015-10-13 06:19:27
【问题描述】:

我有一个字符串,我想将其拆分为多个组件,如下所示:

时间:12:00 PM - 4:00 PM(周一至周五)、3PM - 6 PM(周三)、4 PM - 8PM(周二、周四)

我想将此字符串拆分为其组件,即

第 1 部分:12:00 PM - 4:00 PM(周一至周五)

第 2 部分:下午 3 点至下午 6 点(星期三)

第 3 部分:下午 4 点至晚上 8 点(周二、周四)

我尝试使用 Java 的 string.split() 方法,但我猜它只适用于分隔符,因此如果我用逗号分割,我会得到 4 个部分,依此类推。无论如何使用子字符串拆分字符串,在这种情况下),。 非常感谢。 这是代码的sn-p:

String temp = "12:00 PM - 4:00 PM (MON-FRI), 3PM - 6 PM (WED), 4 PM- 8PM (TUE,THU)";
String[] partsOfInput = temp.split("),");
String part1 = partsOfInput[0];
String part2 = partsOfInput[1];
String part3 = partsOfInput[2];
if(part3!=null)
    System.out.println(part1+part2+part3);
else
    System.out.println(part1+part2);

【问题讨论】:

  • 您可以在结束括号上拆分,然后将结束括号附加到每个元素
  • 你不需要 ),只是根据 拆分,试试这个 - String[] partsOfInput = temp.split(",");

标签: java string split


【解决方案1】:

试试这个

String[] partsOfInput = temp.split("\\),");

但在此您需要在末尾附加),如果最后一个String不以,结尾,则无需附加)

【讨论】:

    【解决方案2】:

    为什么不直接使用 temp.split(", "); 进行拆分,因为这部分字符串中没有空格:"(TUE,THU)"

    所以你可以在你的情况下这样做:

    String temp = "12:00 PM - 4:00 PM (MON-FRI), 3PM - 6 PM (WED), 4 PM- 8PM (TUE,THU)";
    String[] partsOfInput = temp.split(", ");
    String part1 = partsOfInput[0];
    String part2 = partsOfInput[1];
    String part3 = partsOfInput[2];
    if (part3 != null) {
        System.out.println(part1 + part2 + part3);
    } else {
        System.out.println(part1 + part2);
    }
    

    而变量的值为:

    String part1 = partsOfInput[0]; // -> 12:00 PM - 4:00 PM (MON-FRI)
    String part2 = partsOfInput[1]; // -> 3PM - 6 PM (WED)
    String part3 = partsOfInput[2]; // -> 4 PM- 8PM (TUE,THU)
    

    【讨论】:

    • 感谢@Kiki,代码适用于这种情况,但在某些情况下,逗号也有空格。我想通了,不过还是非常感谢。欣赏它。
    【解决方案3】:

    试试下面的代码

     String temp = "12:00 PM - 4:00 PM (MON-FRI), 3PM - 6 PM (WED), 4 PM- 8PM (TUE,THU)";
        String[] partsOfInput = temp.split("\\),");
        String part1 = partsOfInput[0]+")";
        String part2 = partsOfInput[1]+")";
        String part3 = partsOfInput[2];
        if(part3!=null)
        {
            System.out.println("part1-->"+part1);
           System.out.println("Part2->"+part2);
           System.out.println("part3-->"+part3);
        }
           else
            System.out.println(part1+part2);
    }
    

    输出:

    part1-->12:00 PM - 4:00 PM (MON-FRI)
    Part2--> 3PM - 6 PM (WED)
    part3--> 4 PM- 8PM (TUE,THU)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 2018-02-09
      • 2020-09-25
      • 2021-01-29
      相关资源
      最近更新 更多