JAVA 통계 문자열 중 중국어,영어,숫자,공백,특수 문자 의 개수
유 니 코드 문자 인 코딩 표 의 구간 에 따라 여러 문자 로 판단 할 수 있 습 니 다.예 를 들 어 숫자 가'0'~'9'사이 이 고 영문 자 모 는'a'~'z'또는'A'~'Z'등 입 니 다.자바 는 하나의 문자열 이 유 니 코드 인 코딩 을 이용 하여 판단 하 는 지 판단 할 수 있 습 니 다.중국어 인 코딩 구간 은 0 x4e 00-0 x9fbb 이지 만 통용 구간 으로 중국어 도 정확 하지 않 습 니 다.일부 중국어 의 문장 부 호 는 구간 판단 을 이용 하여 잘못된 결 과 를 얻 을 수 있 기 때문이다.그래서 Character.UnicodeBlock 을 통 해 판단 합 니 다.코드 는 다음 과 같 습 니 다:
package cn.csrc.base.count;
public class CountCharacter {
public static void main(String[] args) {
String str =" abcd123 #!";
CountCharacter countCharacter = new CountCharacter();
countCharacter.count(str);
}
/** */
private int chCharacter = 0;
/** */
private int enCharacter = 0;
/** */
private int spaceCharacter = 0;
/** */
private int numberCharacter = 0;
/** */
private int otherCharacter = 0;
//
private StringBuilder sb1=new StringBuilder();
//
private StringBuilder sb2=new StringBuilder();
//
private StringBuilder sb3=new StringBuilder();
//
private StringBuilder sb4=new StringBuilder();
/***
* , , ,
* @param str
*/
public void count(String str) {
if(str.equals("") || str==null){
System.out.println(" ");
return;
}
for (int i = 0; i < str.length(); i++) {
char tmp = str.charAt(i);
if ((tmp >= 'A' && tmp <= 'Z') || (tmp >= 'a' && tmp <= 'z')) {
enCharacter ++;
sb2.append(tmp+" ");
} else if ((tmp >= '0') && (tmp <= '9')) {
numberCharacter ++;
sb3.append(tmp +" ");
} else if (tmp ==' ') {
spaceCharacter ++;
} else if (isChinese(tmp)) {
chCharacter ++;
sb1.append(tmp+" ");
} else {
otherCharacter ++;
sb4.append(tmp +" ");
}
}
System.out.println(" :" + str + " \r
");
System.out.println(" :" + chCharacter +" ("+sb1.toString()+")");
System.out.println(" :" + enCharacter +" ("+sb2.toString()+")");
System.out.println(" :" + numberCharacter+" ("+sb3.toString()+")");
System.out.println(" :" + spaceCharacter+" ");
System.out.println(" :" + otherCharacter+" ("+sb4.toString()+")");
}
/***
*
* @param ch
* @return true, false
*/
private boolean isChinese(char ch) {
// UniCodeBlock
Character.UnicodeBlock ub = Character.UnicodeBlock.of(ch);
// GENERAL_PUNCTUATION “
// CJK_SYMBOLS_AND_PUNCTUATION 。
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOG RAPHS_EXTENSION_B
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
System.out.println(ch + " ");
//sb1.append(ch+" ");
return true;
}
return false;
}
}
결 과 는 다음 과 같다.총결산
위 에서 말 한 것 은 편집장 이 소개 한 JAVA 통계 문자열 중 중국어,영어,숫자,빈 칸,특수 문자 의 개수 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 은 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.