Работа со строками в Java - PullRequest
       1

Работа со строками в Java

0 голосов
/ 08 февраля 2012

Мне нужно реализовать следующее:

«$ prefs» внутри строки «что-то что-то $ prefs (что-то что-то)» должно быть возвращено.$ prefs состоит из букв a-zAz и цифр от 0 до 9.«$» Всегда там.

Найти начало $prefs не проблема, но найти конец сложнее.Как описано выше, $prefs также может быть $prefssdf, за которым следует почти все, например (, ,, &&, а что нет.

Есть ли способ сделать что-тонапример:

while(string.elementAt(i) == [a-zA-Z0-9]){
    result += string.elementAt(i);
}

Пример:

У меня есть следующая строка:

Select * from test where $prefs(select * from test2 where $prefs2);

Мне нужно извлечь все вхождения выражений с префиксом $, поэтомув этом случае это $prefs и $prefs2.Как мне сделать это наиболее эффективно?

Ответы [ 5 ]

3 голосов
/ 08 февраля 2012

Почему бы не использовать регулярное выражение ?

String str = "something something $prefs(something something)";
Matcher matcher = Pattern.compile("\\$[a-zA-Z0-9]+").matcher(str);
if (matcher.find()) {
    System.out.println(str.substring(matcher.start(),matcher.end()));
} else {
    System.out.println("no match");
}

Регулярное выражение принимает знак $ и все буквы / цифры, следующие за ним.

1 голос
/ 08 февраля 2012

Этот ответ предполагает, что это домашняя работа.Обычно я просто рекомендовал бы использовать здесь полное регулярное выражение.

Итак, у вас есть цикл while, и это хорошо.Начните с извлечения метода с именем "isKeywordCharacter":

while ( isKeywordCharacter(string.charAt(i)) ) {
   //...
}

Тогда возникает вопрос, какова лучшая реализация этого метода:

public boolean isKeywordCharacter(char character) {
    return //?
}

Наиболее прозрачным и эффективным может быть что-то вродеэто:

return (character >= 'a' && character <= 'z') || ...;

В то время как наиболее самодокументированное может быть что-то вроде этого:

return String.valueOf(character).matches("[a-zA-Z0-9]");
1 голос
/ 08 февраля 2012
  if(Character.isDigit(a) ||  (a  >=  'a' && a <= 'z' ) || ( a >= 'A' && a <= 'Z' )) {
         // a is [a-zA-Z0-9]
   }
1 голос
/ 08 февраля 2012
0 голосов
/ 08 февраля 2012

Вы можете взглянуть на регулярные выражения ( здесь ) и найти части после $, которые соответствуют разрешенным символам.

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