从下面的URL中,我试图提取2个字符串,例如String a = "region/country";
和String b = "123xyz";
我尝试使用重载的方法IndexOf,但这也没有帮助。任何指针?提取斜杠之间的字符串
String URL = "http://abcd.com/region/country/state/123xyzCONSTANTTEXT.html";
从下面的URL中,我试图提取2个字符串,例如String a = "region/country";
和String b = "123xyz";
我尝试使用重载的方法IndexOf,但这也没有帮助。任何指针?提取斜杠之间的字符串
String URL = "http://abcd.com/region/country/state/123xyzCONSTANTTEXT.html";
可以使用模式类此。如果你只想匹配那个url之后的下两个单词(那不会改变),那么你可以使用它。 \ w是[a-zA-Z0-9_]的简写。如果您对_确定,则使用\ w或者使用[a-zA-Z0-9]。
括号内的区域是匹配组,如果你想分离出地区和国家干脆把括号围绕每个\ W单独和matcher.group(1)将包含区和matcher.group(2)将包含国家
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");
}
谢谢,但我在第二行得到无效的转义序列。我已经导入了导入java.util.regex.Pattern。你能否确认 – dazzle
对不起,有一对错别字,只是测试它,它现在完全有效。 –
简单而强大:)感谢:) –
你可以使用split()
方法。它以正则表达式字符串的形式接受一个参数,并输出一个字符串数组,并将其分解为正则表达式。
String[] stringArray = URL.split("/");
可能会输出像数组:
String[] stringArray = {"http:","","abcd.com","region","country","state","123xyzCONSTANTTEXT.html"};
,然后在数组索引再次使用分裂:
String[] stringArray2 = stringArray[7].split("CONSTANTTEXT.html");
要检索123xyz,将被存储在stringArray2[0]
@jeff_kile提出了一个更快的解决方案。 “{\\ w +?CONSTANTTEXT \ .html}”适用于第二组吗? – lightandlight
'String [] stringArray = URL.split(“/”);'有点混乱。在URL类中没有静态方法叫'split(“/”);'。相反,它应该是'url.split(“/”);' – pokkie
@pokkie在这种情况下,'URL'是一个变量。为了便于阅读,显然应该命名为“url”。 – lightandlight
例如
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
感谢您分享您的意见。感谢 – dazzle
不客气。 –
向我们展示你尝试过什么。并解释URL的常量部分是什么:例如,它是否总是以'http:// abcd.com /'开头? –