字符串截取,中文算2个长度,不截取半个中文

/**

* <pre>
 * 字符串辅助工具
 * </pre>
 * 
 * @project baidamei
 * @author cevencheng <[email protected]>
 * @create 2012-11-30 下午2:42:56
 */
public class StringTool {

/**
  *<b>截取指定字节长度的字符串,不能返回半个汉字</b>
  * 例如:
  * 如果网页最多能显示17个汉字,那么 length 则为 34
  * StringTool.getSubString(str, 34);
  * 
  * @param str
  * @param length
  * @return
  */
 public static String getSubString(String str, int length) {
  int count = 0;
  int offset = 0;
  char[] c = str.toCharArray();
  for (int i = 0; i < c.length; i++) {
   if (c[i] > 256) {
    offset = 2;
    count += 2;
   } else {
    offset = 1;
    count++;
   }
   if (count == length) {
    return str.substring(0, i + 1);
   }
   if ((count == length + 1 && offset == 2)) {
    return str.substring(0, i);
   }
  }
  return "";
 }
}

时间: 2024-10-11 23:26:42

字符串截取,中文算2个长度,不截取半个中文的相关文章

截取文本,区分中英文字符,中文算两个长度,英文算一个长度

/// <summary>    /// 截取文本,区分中英文字符,中文算两个长度,英文算一个长度   /// </summary>   /// <param name="str">待截取的字符串</param>   /// <param name="length">需计算长度的字符串</param>   /// <returns>string</returns>   p

php中计算中文字符串长度、截取中文字符串

在做PHP开发的时候,由于我国的语言环境问题,所以我们常常需要对中文进行处理.在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启.当然,如果是用的自己的服务器,则只要在php.ini中开启即可.如果是用的虚拟主机,而服务器又没有开启这方面的函数的话,那就需要我们自己写出点适合咱国情的函数来了. 以下几个函数用起来颇为顺手的.不过要知道,得在utf-8环境下使用. header

PHP计算中文字符串长度 、截取对应中文字符串

PHP计算字符串长度     及其   截取对应中文字符串 计算字符长度: $gouWu = '美日汇http://www.hnzyxok.com/'; echo mb_strlen($gouWu,'utf-8') ;    //输出的结果是26,里面包含了中文字母符号的计算,在该函数加上 UTF-8行  ,否则算出来的就是32(一个中文对应的长度是3) 对应截取中文: echo mb_substr($gouWu,0,10,'utf-8').;     //从$gouWu变量中对应取10个字符,

Lua实现计算 UTF8 字符串的长度,每一个中文算一个字符

-- 计算 UTF8 字符串的长度,每一个中文算一个字符 -- @function [parent=#string] utf8len -- @param string input 输入字符串 -- @return integer#integer  长度 计算 UTF8 字符串的长度,每一个中文算一个字符 local input = "你好World" print(string.utf8len(input)) -- 输出 7 function string.utf8len(input)

获得字符串实际长度,中文2,英文1 js截取字符串,中英文都能用

var GetLength = function (str) { ///<summary>获得字符串实际长度,中文2,英文1</summary> ///<param name="str">要获得长度的字符串</param> var realLength = 0, len = str.length, charCode = -1; for (var i = 0; i < len; i++) { charCode = str.charCo

ASP如何计算中英文混合字符串长度和截取字符串

用ASP做网站的时候经常会碰到要截取字符串的情况.ASP中的Len函数不管是中文字符,还是英文字符,统统按一个单位来计算,由于一个中文字符的宽度是一个英文字符宽度的两倍,在中英文混合的情况下字符串实际占用的宽度就不好计算了,如果按照Len函数计算的长度来截取字符串截出来的效果也会长短不一,下面是按照一个汉字相当于两个英文字符来计算字符串长度和截取字符串的代码 计算中英文混合字符串的长度: [vb] view plaincopyprint? function getStringLen(str) o

打印机打印字符串转字节数组截取半个中文导致的乱码问题

打印机打印的时候  要求:打印一行文字,但这行文字实际长度 len(单位是:px)是固定的 这时候我们的思路是  :GBK编码下汉字占用两个字节,而且这两个字节都是负数,char型字符占用一个字节, 每个汉字占用的宽度是24px   每个char型占用的宽度是12px    换言之每个字节占用的打印宽度是12px 本行所容纳的字节个数 num=len / 12: 这时候我们将字符串转为字节数组  截取num个字节放到字节数组,然后转为字符串就是该行打印的字符串 但是有个问题就是 当我们截取的最后

截取字符串,含有汉字和字母,不能截半个汉字

原文地址:http://blog.csdn.net/dreameer_dd/article/details/73457593 /** * 2017年6月19日 * * 问题描述: * 编写一个截取字符串的函数,输入为一个字符串和字节数, * 输出为按字节截取的字符串.但是要保证汉字不被截半个, * 如"我ABC"4,应该截为"我AB", * 输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半

C# 计算字符串在控制台中的显示长度

C# 计算字符串在控制台中的显示长度? 警告 您当前查看的页面是未经授权的转载! 如果当前版本排版错误,请前往查看最新版本:http://www.cnblogs.com/qin-nz/p/csharp-calculate-string-display-length.html 提示 更新时间:2016年01月09日. 本作品由勤奋的小孩创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可. 欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接( http