斜杠之间提取字符串

时间:2014-02-09 08:14:05

标签: java string

从下面的网址中,我试图提取2个字符串,即String a = "region/country";String b = "123xyz";我尝试使用IndexOf的重载方法,但这也没有帮助。有什么指针吗?

String URL = "http://abcd.com/region/country/state/123xyzCONSTANTTEXT.html";

3 个答案:

答案 0 :(得分:8)

您可以使用 Pattern 类。如果你只想匹配该网址后面的下两个单词(没有变化),那么你可以使用它。 \ w [a-zA-Z0-9 _] 的简写。如果您对 _ 没问题,请使用 \ w ,或者使用 [a-zA-Z0-9]

括号内的区域是匹配组,如果您想区分区域和国家/地区,只需在每个 \ w 周围添加括号,然后 matcher.group(1)将包含 region matcher.group(2)将包含 country

String URL = "http://abcd.com/region/country/state/123xyzCONSTANTTEXT.html";`

Pattern pattern = Pattern.compile("http://abcd.com/(\\w+/\\w+)");
Matcher matcher = pattern.matcher(URL);
if (matcher.find()) {
    System.out.println(matcher.group(1)); //prints region/country
} else {
    System.out.println("Match not found");
}

答案 1 :(得分:4)

您可以使用split()方法。它以正则表达式字符串的形式接受一个参数,并输出一个字符串数组,分布在正则表达式周围。

String[] stringArray = URL.split("/");

可能会输出如下数组:

String[] stringArray = {"http:","","abcd.com","region","country","state","123xyzCONSTANTTEXT.html"};

然后在数组索引上再次使用split:

String[] stringArray2 = stringArray[7].split("CONSTANTTEXT.html");

检索123xyz,它将存储在stringArray2[0]

答案 2 :(得分:2)

例如

public class Example {    
    public static void main(String[] args) {
        String[] string = "http://abcd.com/region/country/state/123xyzCONSTANTTEXT.html".split("/");

        String string1 = "";
        String string2 = "";

        for(int i =0; i < string.length ; i++) {
            if(i == 3) {
                string1 += string[i] + "/";
            }

            if(i == 4) {
                string1 += string[i];
            }

            if(i == 6) {
                string2 = string[i].substring(0, Math.min(string[i].length(), 6));
            }
        }

        System.out.println(string1);
        System.out.println(string2);
    }
}

输出:

region/country
123xyz