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 통계 문자열 중 중국어,영어,숫자,빈 칸,특수 문자 의 개수 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 은 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기