如何根据重复的子字符串拆分String?

时间:2015-10-13 06:19:27

标签: java string split

我有一个字符串,我想分成多个组件,如下所示:

  

时间:下午12:00 - 下午4:00(周一至周五),下午3点至下午6点(WED),下午4点至晚上8点(TUE,THU)

我想把这个字符串拆分成它的组件,即

  

Part - 1:12:00 PM - 4:00 PM(MON-FRI)

     

第2部分:下午3点至下午6点(WED)

     

Part - 3:4 PM-8PM(TUE,THU)

我尝试使用Java的string.split()方法,但它只适用于分隔符,因此如果我分成逗号,我会得到4个部分,依此类推。无论如何使用子字符串拆分字符串,在本例中为),。 非常感谢。 这是代码的片段:

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);

3 个答案:

答案 0 :(得分:2)

试试这个

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

但是你需要在最后添加),如果它不以) <结尾,则无需为String追加, / p>

答案 1 :(得分: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)

答案 2 :(得分:1)

尝试使用以下代码

 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)