字符取中en长度

原创 2007年09月12日 14:18:00

        /// <summary>
        /// 裁剪字符
        /// </summary>
        /// <param name="input">原始字符串</param>
        /// <param name="maxLength">最大长度,以中文(两个字节)为最小单位</param>
        /// <param name="maxLength">提示字符</param>
        /// <returns>字符数组</returns>
        public static string CutMaxLength(String input, int maxLength, string tips)
        {
            if (input.Length > maxLength)
            {
                string resultString = string.Empty;

                Char[] charArr = input.ToCharArray();
                if ("中文".Length == 4)
                {
                    return input.Substring(0, maxLength);//非中文平台
                }

                int count = 0;
                for (int i = 0; i < maxLength; i++)
                {
                    resultString += charArr[i];
                    if (!IsChinese(charArr[i]))
                    {
                        maxLength++;
                        count += 1;
                        if (count == 2)
                        {
                            count = 0;
                        }
                    }
                }

                if (count == 1)
                {
                    return resultString.Substring(0, maxLength - 1)+ tips;
                }
                return resultString;
            }
            return input;
        }
        private static bool IsChinese(char testChar)
        {
            Encoding encoding = Encoding.GetEncoding("GB2312");
            if (encoding.GetByteCount(testChar.ToString()) == 2)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

==================================

<%
function gotTopic(str,strlen)
dim l,t,c, i
l=len(trim(str))
t=0
for i=1 to l
 c=Abs(Asc(Mid(str,i,1)))
 if c>255 then '如果是汉字为2个字节
  t=t+2
  else
  t=t+1
 end if
if t=strlen then
  gotTopic=left(str,i)&".."
exit for
elseif t>strlen then
  gotTopic=left(str,i-1)&".."
exit for
 end if
next
gotTopic=str
end function

%>
<%=gotTopic("12中5文634", 12)%>

============================================

    public static string TrimString(String input, int maxLength, char padChar)
    {
        int resultLength = 0;
        int resultIndex = 0;
        foreach (char temp in input)
        {
            resultIndex++;
            if (Encoding.GetEncoding("GB2312").GetByteCount(temp.ToString()) == 2)
            {
                resultLength = resultLength + 2;
            }
            else
            {
                resultLength = resultLength + 1;
            }
            if (resultLength == maxLength)
            {
                return input.Substring(0, resultIndex);
            }
            else if (resultLength > maxLength)
            {
                return input.Substring(0, resultIndex-1);
            }
        }
        return input + string.Empty.PadRight(maxLength - resultLength, padChar);
    }

PHP获取字符串长度之strlen和mb_strlen的区别

在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别。 下面通过例子,讲解这两者之间的区别。 先看例子: //测试时...
  • u013372487
  • u013372487
  • 2016年05月13日 14:10
  • 4739

组合(从长度为n的字符串中取m个字符)---java两种实现方法

对于这类组合问题,虽然感觉很简单,但是用java代码实现起来却不是那么容易的。 这其中最容易用到的应该是递归的思想了,这种方法也比较容易理解: 方法一: 递归实现代码:/** * 可能...
  • u014039577
  • u014039577
  • 2015年12月18日 17:41
  • 1254

sql 获取字符串长度SQL字符串操作汇总

转自:http://blog.csdn.net/a4562834/article/details/7290856   --将字符串中从某个字符开始截取一段字符,然后将另外一个字符串插入此处  ...
  • dreamgis
  • dreamgis
  • 2013年03月26日 17:42
  • 1151

、给一组字符串,需要你输出最小长度的字符串与最大长度的字符串,如果有相同最小(大)长度的,就按照给的顺序挨个输出。

【问题描述】给一组字符串,需要你输出最小长度的字符串与最大长度的字符串,如果有相同最小(大)长度的,就按照给的顺序挨个输出。【例如】 【输入】qwert asdfg sdf erd jkjkljsld...
  • u011177305
  • u011177305
  • 2016年03月06日 19:27
  • 692

windows客户端开发--如何测量一个字符串显示的物理长度

首先需要说明的是,我所说的字符串的长度,不是string的length,也不是string的size。我指的是显示的长度,即物理长度。缘由: 之所以要提到这个,是因为遇到了一些问题。 再使用dui...
  • wangshubo1989
  • wangshubo1989
  • 2016年03月01日 19:51
  • 3078

如何求C语言字符串长度(strlen函数和sizeof关键字)

原文出处:http://blog.csdn.net/kstrwind/article/details/8036555 ----------------------------------------...
  • u012209626
  • u012209626
  • 2015年08月12日 20:09
  • 24484

Shell中获取字符串长度的七种方法

求字符串操作在shell脚本中很常用,下面归纳、汇总了求字符串的几种可能方法:...
  • Jerry_1126
  • Jerry_1126
  • 2016年07月05日 23:12
  • 11724

ORACLE 中 VARCHAR2 类型的字段长度是按照 byte 来定义的 一个容易被忽略的问题

很多新手在建数据库或添加表、字段时,会这样忽略一个问题:ORACLE 中 VARCHAR2类型的字段长度是按照 byte 来定义的。如果数据库使用的字符集是 GBK,GB2312 或者其他定长字符集的...
  • qiuhan
  • qiuhan
  • 2015年01月06日 11:15
  • 2151

linux shell 字符串操作(长度,查找,替换)详解 BASH

linux shell 字符串操作(长度,查找,替换)详解  在做shell批处理程序时候,经常会涉及到字符串相关操作。有很多命令语句,如:awk,sed都可以做字符串各种操作。 其实shell...
  • Augusdi
  • Augusdi
  • 2015年04月03日 16:01
  • 5389

UTF-8中汉字的字节长度

1、美国人首先对其英文字符进行了编码,也就是最早的ascii码,用一个字节的低7位来表示英文的128个字符,高1位统一为0; 2、后来欧洲人发现尼玛你这128位哪够用,比如我高贵的法国人字母上面...
  • urbanvice
  • urbanvice
  • 2014年09月17日 16:17
  • 888
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:字符取中en长度
举报原因:
原因补充:

(最多只允许输入30个字)