2014-02-09 7 views
2

Из приведенного ниже URL-адреса я пытаюсь извлечь 2 строки i.e 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].

Область внутри круглых скобок является соответствие группа, если вы хотите выделить область и страну просто поставить скобку вокруг каждого из \ ш индивидуально и 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

Спасибо, но я получаю Invalid escape-последовательность на 2-й строке. Я импортировал импорт 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 ("/");' немного запутанно. Нет статического метода, называемого 'split ("/");' в классе 'URL'. Скорее это должно быть '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

Добро пожаловать. –

Смежные вопросы