【问题标题】:Java- How to find non-alphabetical letters in a string? (Quick way)Java-如何在字符串中查找非字母字母? (快捷方式)
【发布时间】:2017-10-28 02:35:40
【问题描述】:

在 Java 中,给定一个字符串,如“abc@df”,其中字符“@”可以是任何其他非字母,如“%”、“^”、“&”等。找到该索引的有效方法?我知道 for 循环会有点快(取决于字符串长度),但是其他更快的方法呢?一种查找非字母字母的所有索引或与给定索引最接近的索引的方法(如 indexOf(string,startingIdx)) 谢谢!

【问题讨论】:

  • 如果您查看 indexOf 的实现,我敢打赌您会找到一个循环。使用它的好处是您不必编写循环,这是一件好事,因为最好的代码是您不编写的代码。
  • @Bill 我想我没有澄清。找到一种方法来查找非字母字符的索引。由于存在大量非字母字符,因此无法使用 indexOf() ,因为您并不具体知道要查找的字符。希望这会有所帮助!
  • 当然我明白了,这也是我留下评论而不是建议答案的部分原因。

标签: java string indexof lastindexof


【解决方案1】:

一个for循环,你可以使用Character类来判断每个字符是不是一个Letter(或者其他类型)。见:https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#isAlphabetic(int)

【讨论】:

    【解决方案2】:

    您可能应该使用正则表达式:

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

    【讨论】:

      猜你喜欢
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 2021-11-05
      相关资源
      最近更新 更多