避免使用多种拆分方法

时间:2016-01-25 08:10:18

标签: java

我有一个这样的字符串。

   //Locaton;RowIndex;maxRows=New York, NY_10007;1;4 

从此我需要获得纽约唯一的名称。    如何在单步代码中实现。

我用过..

   String str = "Locaton;RowIndex;maxRows=New York, NY_10007;1;4 ";
   str = str.split("=")[1];
   str = str.split(",")[0]

上面的代码包含了很多分裂。我怎么能避免thiis。    我想只使用单一代码获取contry名称。

2 个答案:

答案 0 :(得分:4)

尝试使用此正则表达式"=(.*?),",如下所示:

   String str = "Locaton;RowIndex;maxRows=New York, NY_10007;1;4 ";
    Pattern pattern = Pattern.compile("=(.*?),");
    Matcher matcher = pattern.matcher(str);
    if (matcher.find()) {
        System.out.println(matcher.group(1));
    }

输出:

   New York
  

使用matcher.group(1)表示捕获组可以轻松提取部分正则表达式匹配,括号也可以创建编号的捕获组。   它将正则表达式部分匹配的字符串部分存储在括号内。

 Match "Locaton;RowIndex;maxRows=New York, NY_10007;1;4 "
 Group 1: "New York"

答案 1 :(得分:1)

使用带有正则表达式的捕获组,可完美捕获字符串中的特定数据。

  String str = "Locaton;RowIndex;maxRows=New York, NY_10007;1;4 ";
   String pattern = "(.*?=)(.*?)(,.*)";
   Pattern r = Pattern.compile(pattern);

   Matcher m = r.matcher(str);

   if (m.find()) {
       System.out.println("Group 1: " + m.group(1));
       System.out.println("Group 2: " + m.group(2));
       System.out.println("Group 3: " + m.group(3));
   }

这是输出

Group 1: Locaton;RowIndex;maxRows=
Group 2: New York
Group 3: , NY_10007;1;4