使用regex / java多次出现连字符符号拆分字符串

时间:2017-12-28 08:12:00

标签: java regex

使用以下xpath获取字符串值

String noAndDate = driver.findElement(By.xpath("//*[@id='c38']/div/table/tbody/tr[1]/td/strong")).getText();

输出上述字符串= 2928554 - 2009-09-18 (BOPI 2009-38)

我的预期输出

2928554
2009-09-18

我试过下面的分裂,但我没有得到我预期的输出

String[] words = noAndDate.split("-");

请建议/帮助我

5 个答案:

答案 0 :(得分:5)

您可以尝试拆分正则表达式替换,查找由空格或纯空格包围的连字符:

String input = "2928554 - 2009-09-18 (BOPI 2009-38)";
String[] parts = input.split("(\\s+-\\s+|\\s+)");
System.out.println(parts[0]);
System.out.println(parts[1]);

Demo

答案 1 :(得分:0)

尝试以下代码 -

String str =“2928554 - 2009-09-18(BOPI 2009-38)”;

String str1 = str.split(“ - |”)[0];

String str2 = str.split(“ - |”)[1];

这将返回str1为2928554,str2为2009-09-18。

希望这会对你有帮助!

答案 2 :(得分:-1)

只需用正则表达式进行拆分即可。

String given = "2928554 - 2009-09-18 (BOPI 2009-38)";
String [] splitted = given.split(" - |\\s+");
String result = splitted[0] +", "+splitted[1];
System.out.println(result);

打印

2928554, 2009-09-18

答案 3 :(得分:-2)

试试这个:

  

String [] words = noAndDate.split("");

然后

  

的System.out.println(字[0]);

     

的System.out.println(字[2]);

答案 4 :(得分:-2)

使用正则表达式捕获组,您可以在这里看到您想要的两组:

(\d+)\s*-\s*(\d+\-\d+\-\d+)

()= group