从下面的网址中,我试图提取2个字符串,即String a = "region/country";
和String b = "123xyz";
我尝试使用IndexOf的重载方法,但这也没有帮助。有什么指针吗?
String URL = "http://abcd.com/region/country/state/123xyzCONSTANTTEXT.html";
答案 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