2014-02-09 139 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

不客氣。 –