2014-02-09 109 views
2

从下面的URL中,我试图提取2个字符串,例如String a = "region/country";String b = "123xyz";我尝试使用重载的方法IndexOf,但这也没有帮助。任何指针?提取斜杠之间的字符串

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

向我们展示你尝试过什么。并解释URL的常量部分是什么:例如,它是否总是以'http:// abcd.com /'开头? –

回答

7

可以使用模式类此。如果你只想匹配那个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"); 
} 
+0

谢谢,但我在第二行得到无效的转义序列。我已经导入了导入java.util.regex.Pattern。你能否确认 – dazzle

+0

对不起,有一对错别字,只是测试它,它现在完全有效。 –

+0

简单而强大:)感谢:) –

4

你可以使用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]

+1

@jeff_kile提出了一个更快的解决方案。 “{\\ w +?CONSTANTTEXT \ .html}”适用于第二组吗? – lightandlight

+0

'String [] stringArray = URL.split(“/”);'有点混乱。在URL类中没有静态方法叫'split(“/”);'。相反,它应该是'url.split(“/”);' – pokkie

+0

@pokkie在这种情况下,'URL'是一个变量。为了便于阅读,显然应该命名为“url”。 – lightandlight

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 
+0

感谢您分享您的意见。感谢 – dazzle

+0

不客气。 –