如何从字符串中找到第一个字母字符

时间:2014-02-20 12:30:35

标签: android regex string

假设我有一个字符串"12345.6789abcd23" 所以我的字符串以数字开头,然后是字母字符,然后它可能包含其他数字 所以我想要的是"12345.6789""abcd23" 请注意,这只是一个示例,因此indexOf()无济于事, 如果我能得到第一个字母表的索引很棒

1 个答案:

答案 0 :(得分:4)

您可以合并PatternMatcher来实现:

final Pattern line = Pattern.compile("^[^a-zA-Z]+(.).*");
final Matcher m = line.matcher(your_line);
if (m.matches())
  Log.d("FirstLetter", "My first letter is: " + m.group(1));

这基本上会使用正则表达式并从a-z的开始处删除与A-ZString之间的范围不匹配的任何内容,然后返回第一个字符在它之后,预计是字母字符。这就是为什么它在括号之间,用.group(1)得到它。

  • ^句中的第一个compile表示要匹配的String的开头。

  • []之间的任何内容代表一组。所以,我代表一个范围,a-z将扩展为任何字母字符。但是,集合开始时的^意味着不同的东西。这意味着,所以我想摆脱任何与字母字符不匹配的东西。

  • 加号(+)表示此集合意味着至少有1个且最多无限数量的字符与上述集合匹配。如果在String的初始化时无法获得非字母字符,请使用*而不是+。这代表任何次出现次数,包括

  • 下一个字母 将是字母,所以我想抓住它,我用点(.)代表它。点代表一次任何字符。我用括号括起来,因为我希望能够用Matcher以某种方式选择它。

  • 我不介意其余的,只是把。*(任何时候任何字符(包括0次)