2014-02-20 38 views
-2

找到第一個字母字符可以說我有一個字符串"12345.6789abcd23" 所以我的字符串開始於一個數字,然後字母字符,那麼它可能包含其他數字 所以我要的是"12345.6789""abcd23" 請注意,這僅僅是一個例子所以indexOf()不會幫助, 如果我能得到第一個字母的指數,將是巨大如何從一個字符串

+0

使用正則表達式來找到它 –

+2

這聽起來很像一個家庭作業。我敢肯定,如果你展示了你寫的內容以及你如何嘗試它,人們會願意指出它梨形的位置 – DBD

+0

嘗試在http://www.regxlib.com搜索自己的解決方案 –

回答

3

您可以結合一個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)); 

這基本上會使用正則表達式,並從String的開始處去除與a-zA-Z之間的範圍不匹配的任何內容,然後返回第一個字符,它應該是字母字符。所以這就是爲什麼它在括號之間,以.group(1)得到它。

  • compile句子第一^表示String的beggining要匹配。

  • []之間的任何值表示一組。所以我代表一個範圍,a-z將擴展到任何字母字符。儘管如此,在集合的開始中的^意味着不同的事情。這意味着不是,所以我想擺脫任何不匹配的字母字符。

  • 加號(+)表示此集合的含義是至少有1個,最多可以有無限個字符與上述集合相匹配。如果在String的開始處無法獲得非字母字符的情況,請使用*而不是+。這代表任何發生次數,包括

  • 非常下一個字母是字母,所以我想抓住它,我用點代表它(.)。點代表任何字符爲一次。我用圓括號包住它,因爲我想用Matcher以某種方式選擇它。

  • 我不介意休息,只是把。*(任何字符的任何時間(包括0次)

+0

這很好,非常感謝, –

+1

並感謝您的解釋:D,我仍然與Java新 –