2013-04-27 4 views
-3

Мне нужно получить строку, которая находится между символами # (String) #.Формат Java Matcher для строки # xxx #

Как я могу это достичь?

+1

Есть ли что-нибудь, что вы сделали, чтобы попытаться решить эту проблему? Мы будем более охотно отвечать на ваш вопрос, если вы скажете нам, что вы пробовали до сих пор. (Полезные ссылки для уточнения вопросов: [ask], [FAQ]) – Doorknob

+0

Я пробовал [\\ s \\ u00A0] {2,} | [[\\ s \\ u00A0] && [^]]. Но не working – Sagar

+0

Немного исследований, безусловно, решит вашу проблему. – fareed

ответ

3

Вы можете использовать регулярные выражения, как это:

Pattern p = Pattern.compile("#(.*?)#"); 
Matcher m = p.matcher(yourString); 
System.out.println(m.find() ? m.group(1) : "No match"); 

Или, можно разделить на #:

String[] tokens = yourString.split("#"); 
System.out.println(tokens.length >= 3 ? tokens[1] : "No match"); 

Это будет оба получают первый токен, т. е. если yo u имел this#is a#string#it is stringy#okay он бы вернулся is a. Если вам нужно, чтобы оно совпадало с первым # до последнего, вы можете изменить регулярное выражение, удалив ? (ленивый соответствующий символ).

Если вы хотите получить все жетоны, просто напечатайте все значения во втором примере, а не только на втором индексе.

+0

@Pshemo, который будет печатать каждое другое совпадение, что, вероятно, не является тем, что хочет OP – Doorknob

+0

Затем рассмотрим 'if (m.find())'. – Pshemo

+0

@Pshemo done :) – Doorknob

2

Попробуйте indexOf и substring методы String class.

String str = "#(String)#"; 
String result = str.substring(str.indexOf("#")+1 , str.lastIndexOf("#")); 
Смежные вопросы