在Java中,给出一个字符串,比如“abc @ df”,其中字符'@'可以是任何其他非字母,如'%','^','&'等等。找到该指数最有效的方法?我知道for循环会有点快(取决于字符串的长度),但是其他更快的方法呢?一种方法,用于查找非字母字母的所有索引或与给定索引最接近的索引(如indexOf(string,startingIdx)) 谢谢!
答案 0 :(得分:1)
for循环,您可以使用Character类来确定每个字符是否为Letter(或其他类型)。请参阅:https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isAlphabetic(int)
答案 1 :(得分:0)
您应该使用正则表达式:
Pattern patt = Pattern.compile("[^A-Za-z]");
Matcher mat = patt.matcher("avc@dgh");
boolean found = mat.find();
System.out.println(found ? mat.start() : -1);