String中統計數字,字母,漢字等個數
阿新 • • 發佈:2019-01-29
首先要分兩個方面來區分,第一種是不需要轉換成char陣列的,另一種是需要轉換成char陣列的;
1.使用String進行比較:
1>這裡為了取出部分字串,我們用到了String中的substring方法,在此方法中你可以輸入開始和結束的,然後根據獲取到的字串進行比較
String s4 = new String("123nfa ,rwerew234");
//正則表示式字串必須先被編譯為Pattern物件,然後再利用該Pattern物件建立對應的Matcher物件
Pattern pattern = Pattern.compile("[0-9]*" );
for (int i = 0; i < s4.length(); i++) {
//將字串擷取,這裡只演示擷取一個
String s5 = s4.substring(i,i+1);
//利用該Pattern物件建立對應的Matcher物件
if(pattern.matcher(s5).matches()){
num++;
}
}
這裡需要注意的是大寫字母:[A-Z]+;小寫字母:[a-z]+;漢字:[\u4e000-\u9fa5]
2.將String字串轉換為char陣列:
char[] ch = s.toCharArray();
再使用for迴圈獲取內容,比較方法有三種:
1>使用Character自帶的方法進行比較:
for (int i = 0; i < ch.length; i++) {
//第一種,使用Character自己的方法來判斷
char c = ch[i];
if(Character.isDigit(c)){
num++;
}
if (Character.isLowerCase(c)){ //isUpperCase大寫字母 //isLetter 字母
abc++;
}else if(Character.isSpace(c)){ //空格 但此方法已經過時
space++;
}else{
qita++;
}
}
2>使用ASCII編碼:
//第二種使用ascII編碼
if(ch[i]>= 48 && ch[i]<=57){ //代表0-9
num++;
}else if(ch[i]>=65 && ch[i]<= 90){ //代表大寫:A-Z 小寫:a-z 為 97-122
abc++;
}else if(ch[i] == 32){ //代表空格
space++;
}
3>自己進行判斷
注意這裡進行比較的時候需要使用單引號,來證明比較的是字元而不是ASCII碼
char c = ch[i];
if(c>='0' && c<='9'){
num++;
}else if(c>='a' && c<='z'){
abc++;
}else if(c == ' '){
space++;
}else if(c == ','){
qita++;
}
希望大家筆試順利!!!