Как найти индекс круглых скобок indexOf - путаница, ошибка Eclipse или функция - PullRequest
1 голос
/ 01 октября 2010

Я хочу найти позицию in( в строке, но я не могу явно написать:

int index = valueOf("in(");

, потому что я получаю ошибку non closed group ( java.util.regex.PatternSyntaxException Unclosed group). Если я выйду из скобок, он не найдет индекс in(, но in\(

int index = value.indexOf("in\\(");

Как мне этого добиться?

РЕДАКТИРОВАТЬ: Я действительно допустил ошибку при формулировании вопроса.В моем коде я использую indexOf, но настоящей проблемой был String.split.Но когда я получил PatternSyntaxException, я каким-то образом перешел к строке, где находился indexOf, поэтому я начал исправлять проблему в неправильном месте.Когда я сбежал (тогда indexOf не обнаружил "\ (".

Что я запутался и почувствовал, что потеря позиции - это то, что сделал затмение, тогда я публикую пост Стекпоток, что я делаю:

 String value = "in(test";
 String[] arr = value.split("in\\(");

поэтому у меня есть arr = {"", "test"}, как показано ниже: alt text

но почему? Почему я вижу значение: alt text

Почему в элементах массива строковое значение отображается как исходная строка? Это ошибка или особенность?

Ответы [ 2 ]

1 голос
/ 01 октября 2010

String.indexOf не принимает регулярные выражения. Вы должны быть в состоянии использовать:

int index = value.indexOf("in(");
0 голосов
/ 01 октября 2010

String.indexOf по существу звонки,

static int indexOf(char[] source, int sourceOffset, int sourceCount, char[] target, int targetOffset, int targetCount, int fromIndex); 

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

Следовательно,

int index = value.indexOf("in("); 

вернет вам первый индекс вхождения (из позиции 0), где происходит in(, в противном случае -1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...