2013-12-11 4 views
3

У меня есть строкаРасщепление строки на основе ключевого слова

String x="http://www.allindiaflorist.com/imgs/arrangemen4.jpg***http://storyofpakistan.com/wp-content/uploads/2011/11/Rukn-AlaminMultan.jpg***" ; 

Я хочу, чтобы извлечь строку на основе ***, так что я должен получить массив размера 2, я это делаю ,.

String[] explode=a.split("//***"); 
     img1=explode[0]; //`it gives java.util.regex.patternSyntaxException` 

Я также попытался

String[] explode=a.split("***"); 
      img1=explode[0]; //`it gives java.util.regex.patternSyntaxException` 

Я хорошо, чтобы написать свой заказ обобщенную функцию, которая может искать ***, но я хочу, почему split() не работает Thanks

ответ

3

Использование Pattern#quote:

String[] explode=a.split(Pattern.quote("***")); 

Теперь вам не нужно ломать голову над тем, что вам нужно сбежать. Метод «» возвращает литеральный шаблон Строка для указанной строки ».

(Для уточнения, вы получаете сообщение об ошибке, потому что вам следует избегать каждый*).

2

Использование регулярных выражений [*]{3} .Try,

String x="htt..... 
String arr[] =x.split("[*]{3}"); 
1

побег * используя \\

String[] arr=x.split("\\*\\*\\*"); 
2
String str = "http://www.allindiaflorist.com/imgs/arrangemen4.jpg***http://storyofpakistan.com/wp-content/uploads/2011/11/Rukn-AlaminMultan.jpg***"; 
    String delim = "\\*\\*\\*"; 

    String[] arr= str.split(delim); 

    System.out.println(arr[0]); 
    System.out.println(arr[1]); 

output 

http://www.allindiaflorist.com/imgs/arrangemen4.jpg 
http://storyofpakistan.com/wp-content/uploads/2011/11/Rukn-AlaminMultan.jpg 
0

попробуйте этот код будет работать вы дали неправильный шаблон regx. она должна быть внутри []

public static void main(String args[]) 
     { 
      String x="http://www.allindiaflorist.com/imgs/arrangemen4.jpg***http://storyofpakistan.com/wp-content/uploads/2011/11/Rukn-AlaminMultan.jpg***" ; 
     String[] explode=x.split("[***]"); 
      String img1=explode[0]; 
      System.out.println(img1); 
     } 
+0

Результирующий массив не будет размером 2. – Stephan

1

Вы можете попробовать это:

String[] explode=a.split("\\Q***\\E"); 

\Q Начало процитировать регулярное выражение. \E Конец, цитирующий регулярное выражение.

В основном, между \Q и \E Метасимвол * будет рассматриваться как простой характер (т.е. *) без особого смысла.

+0

Добавление объяснений поможет ОП много .. – Maroun

+0

@MarounMaroun Done :) – Stephan

+0

Это хороший ответ :) – Maroun

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