Java- Как найти неалфавитные буквы в строке? (Быстрый способ)

В Java, учитывая строку, например «abc@df», где символ «@» может быть ЛЮБОЙ другой небуквой, например «%», «^», «&» и т. д. Что было бы наиболее эффективным способом найти этот индекс? Я знаю, что цикл for будет довольно быстрым (в зависимости от длины строки), но как насчет других более быстрых методов? Метод, который находит все индексы неалфавитных букв или ближайший к заданному индексу (например, indexOf(string, startIdx)) Спасибо!


person Jsbbvk    schedule 28.10.2017    source источник
comment
Если вы посмотрите на реализацию indexOf, я готов поспорить, что вы найдете цикл. Преимущество его использования заключается в том, что вам не нужно писать цикл, и это хорошо, потому что лучший код — это код, который вы не пишете.   -  person Bill    schedule 28.10.2017
comment
@ Билл, кажется, я не уточнил. Найдите способ найти индекс небуквенного символа. Поскольку существует огромное количество неалфавитных символов, использовать indexOf() невозможно, потому что вы не знаете, какой именно символ ищете. Надеюсь это поможет!   -  person Jsbbvk    schedule 28.10.2017
comment
Конечно, я это понимаю, и это одна из причин, по которой я оставил комментарий вместо того, чтобы предложить ответ.   -  person Bill    schedule 28.10.2017


Ответы (2)


В цикле for вы можете использовать класс Character, чтобы определить, является ли каждый символ буквой (или другим типом). См.: https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isAlphabetic(int)

person Nicholas Hirras    schedule 28.10.2017

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

  Pattern patt = Pattern.compile("[^A-Za-z]");
  Matcher mat = patt.matcher("avc@dgh");
  boolean found = mat.find();
  System.out.println(found ? mat.start() : -1);
person user184994    schedule 28.10.2017