2013-05-21 3 views
1

У меня возникли некоторые проблемы с поиском специального символа «(».
я получил java.util.regex.PatternSyntaxException exception has occurred.
Это может иметь что-то делать с «(» рассматривается как особый характер. Я не очень хорошо с рисунком выражение. Может кто-то поможет мне правильно искать экранирующий символ?Как найти специальный символ в строке java?

// I need to split the string at the "(" 

    String myString = "Room Temperature (C)"; 
    String splitList[] = myString.split ("("); // i got an exception 


    // I tried this but got compile error   
    String splitList[] = myString.split ("\("); 
+0

Хорошо, спасибо большое, это работает. – tadpole

ответ

1

причину вы получили исключение в первый раз, это потому, что split() принимает регулярное выражение в качестве аргумента, и ( имеет особое значение там, как вы предлагаете. Чтобы этого избежать, вам нужно избежать i t используя \, как вы пробовали.

То, что вы пропустили, что вы также должны избежать ваши обратные слэши с в Java дополнительной \, то есть вам нужно всего два:

String splitList[] = myString.split ("\\("); 
3

Попробуйте один из них:

string.split("\\("); 
string.split(Pattern.quote("(")); 

Так как строка split принимает регулярное выражение в качестве аргумента, вам нужно избегать символов должным образом. См Джон Скита answer об этом здесь:

1

Вам нужно бежать символ с помощью обратной косой черты: string.split("\\(");

1

( является одним из регулярных выражений special символов. Чтобы избежать этого, вы можете использовать, например.

  • split(Pattern.quote("(")),
  • split("\\Q(\\E"),
  • split("\\("),
  • split("[(]").
Смежные вопросы