java判断中文字符串长度的简单实例

 更新时间:2017年01月22日 09:41:37   投稿:jingxian  
下面小编就为大家带来一篇java判断中文字符串长度的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

话不多说,上代码:

 /**
  * 获取字符串的长度,如果有中文,则每个中文字符计为2位
  * @param value 指定的字符串
  * @return 字符串的长度
  */
  public static int length(String value) {
    int valueLength = 0;
    String chinese = "[\u0391-\uFFE5]";
    /* 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 */
    for (int i = 0; i < value.length(); i++) {
      /* 获取一个字符 */
      String temp = value.substring(i, i + 1);
      /* 判断是否为中文字符 */
      if (temp.matches(chinese)) {
        /* 中文字符长度为2 */
        valueLength += 2;
      } else {
        /* 其他字符长度为1 */
        valueLength += 1;
      }
    }
    return valueLength;
  }


 /** 
  * 得到一个字符串的长度,显示的长度,一个汉字或日韩文长度为2,英文字符长度为1 
  * @param String s 需要得到长度的字符串 
  * @return int 得到的字符串长度 
  */  
  public static int length(String s) { 
    if (s == null) 
      return 0; 
    char[] c = s.toCharArray(); 
    int len = 0; 
    for (int i = 0; i < c.length; i++) { 
      len++; 
      if (!isLetter(c[i])) { 
        len++; 
      } 
    } 
    return len; 
  } 


  /** 
  * 得到一个字符串的长度,显示的长度,一个汉字或日韩文长度为1,英文字符长度为0.5 
  * @param String s 需要得到长度的字符串 
  * @return int 得到的字符串长度 
  */  
  public static double getLength(String s) { 
  double valueLength = 0;  
    String chinese = "[\u4e00-\u9fa5]";  
    // 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1  
    for (int i = 0; i < s.length(); i++) {  
      // 获取一个字符  
      String temp = s.substring(i, i + 1);  
      // 判断是否为中文字符  
      if (temp.matches(chinese)) {  
        // 中文字符长度为1  
        valueLength += 1;  
      } else {  
        // 其他字符长度为0.5  
        valueLength += 0.5;  
      }  
    }  
    //进位取整  
    return Math.ceil(valueLength);  
  }
根据长度截取内容,区分中英文:

/**
   * 截取字符长度,区分中英文
   *
   * @param abc 字符串内容
   * @param len 截取长度
   * @return
   */
  public static String subStr(String abc, int len) {
    if (TextUtils.isEmpty(abc) || len <= 0)
      return "";
    StringBuffer stringBuffer = new StringBuffer();
    int sum = 0;
    char[] chars = abc.toCharArray();
    for (int i = 0; i < chars.length; i++) {
      if (sum >= (len * 3)) {
        break;
      }
      char bt = chars[i];
      if (bt > 64 && bt < 123) {
        stringBuffer.append(String.valueOf(bt));
        sum += 2;
      } else {
        stringBuffer.append(String.valueOf(bt));
        sum += 3;
      }
    }
    return stringBuffer.toString();
  }


以上这篇java判断中文字符串长度的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot整合mybatisplus和druid的示例详解

    SpringBoot整合mybatisplus和druid的示例详解

    这篇文章主要介绍了SpringBoot整合mybatisplus和druid的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • javaweb用户注销后点击浏览器返回刷新页面重复登录问题的解决方法

    javaweb用户注销后点击浏览器返回刷新页面重复登录问题的解决方法

    这篇文章主要为大家详细介绍了javaweb用户注销后点击浏览器返回刷新页面重复登录问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Scala求和示例代码

    Scala求和示例代码

    这篇文章主要介绍了Scala求和示例代码,需要的朋友可以参考下
    2019-06-06
  • Spring MVC中的拦截器案例演示

    Spring MVC中的拦截器案例演示

    拦截器可以拦截所有的请求,也可以只拦截满足指定的请求, Spring MVC 的拦截器类似于过滤器,用来执行预处理和后处理操作,本文给大家介绍Spring MVC中的拦截器案例演示,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • Java StringTokenizer分隔符拆分字符串

    Java StringTokenizer分隔符拆分字符串

    Java中的StringTokenizer类用于将一个字符串分解成标记,本文主要介绍了Java StringTokenizer分隔符拆分字符串,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Java利用Socket和IO流实现文件的上传与下载

    Java利用Socket和IO流实现文件的上传与下载

    本文主要介绍了Java利用Socket和IO流实现文件的上传与下载,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Nacos配合SpringBoot实现动态线程池的基本步骤

    Nacos配合SpringBoot实现动态线程池的基本步骤

    使用Nacos配合Spring Boot实现动态线程池,可以让你的应用动态地调整线程池参数而无需重启,这对于需要高度可配置且需要适应不同负载情况的应用来说非常有用,本文给大家介绍实现动态线程池的基本步骤,需要的朋友可以参考下
    2024-02-02
  • Spring Boot 通过CORS实现跨域问题

    Spring Boot 通过CORS实现跨域问题

    这篇文章主要介绍了Spring Boot 通过CORS实现跨域,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java反射 Field类的使用全方位解析

    Java反射 Field类的使用全方位解析

    这篇文章主要介绍了Java反射 Field类的使用全方位解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 详解SpringBoot接收参数的五种形式

    详解SpringBoot接收参数的五种形式

    在Spring Boot中,接收参数可以通过多种方式实现,本文给大家介绍了SpringBoot接收参数的五种形式,并通过代码和图文给大家介绍的非常详细,需要的朋友可以参考下
    2024-03-03

最新评论