2017-10-28 1 views
0

In Java, gegeben eine Zeichenkette, wie "abc @ df", wo das Zeichen "@" ANY anderen Buchstaben sein könnte, wie "%", "^", "&", usw. Was würde der effizienteste Weg, diesen Index zu finden? Ich weiß, dass eine for-Schleife ziemlich schnell wäre (abhängig von der String-Länge), aber was ist mit anderen schnelleren Methoden? Eine Methode, die alle Index (e) von nicht-alphabetischen Buchstaben oder die am nächsten zu einem bestimmten Index (wie indexOf (string, startingIdx)) findet Danke!Java - Wie findet man nicht alphabetische Buchstaben in einer Zeichenkette? (Schneller Weg)

+1

Wenn Sie die Implementierung von indexOf betrachten, würde ich wetten, dass Sie eine Schleife finden würden. Der Vorteil bei der Verwendung wäre, dass Sie die Schleife nicht schreiben müssen, und das ist eine gute Sache, weil der beste Code Code ist, den Sie nicht schreiben. – Bill

+0

@Bill Ich denke, ich habe nicht geklärt. Suchen Sie nach einem Weg, um einen Index eines nicht alphabetischen Zeichens zu finden. Da es eine große Auswahl an nicht-alphabetischen Zeichen gibt, ist es nicht möglich, indexOf() zu verwenden, da Sie das gesuchte Zeichen nicht genau kennen. Hoffe das hilft! – Jsbbvk

+0

Sicher bekomme ich das, was ein Teil des Grundes ist, dass ich einen Kommentar hinterließ, anstatt eine Antwort vorzuschlagen. – Bill

Antwort

0

Sie sollten wahrscheinlich einen regulären Ausdruck verwenden:

Pattern patt = Pattern.compile("[^A-Za-z]"); 
    Matcher mat = patt.matcher("[email protected]"); 
    boolean found = mat.find(); 
    System.out.println(found ? mat.start() : -1); 
Verwandte Themen