C#中汉字当2个字符计算

在当前一个项目中,需要计算字符串的长度,并将固定长度字符截下来,其中汉字要按2个字符计算,数字与字母按1个字符计算,没有找到现成的函数可以使用,参考 如何得到一个汉字和字母组合的字符串的准确的长度( asp.net 版本的 ) http://www.webjx.com/htmldata/2005-10-20/1129777793.html

参考写了以下两个函数,主要功能为按指定长度取copy字符串,取代sub

string的功能吧.

private
int GetLength( String aOrgStr ) 
{
  int
  intLen=aOrgStr.Length;
  
  int i;
  
  char[]
  chars = aOrgStr.ToCharArray( ) ;
  for( i=0;i<chars.Length;i++ )
  {
    if( System.Convert.ToInt32(chars[i])>255 )
    {
      intLen++;
    }
  }
  return
  intLen;
}
private String MutiSubString( String aOrgStr , int aLength, ref String aAfterStr ) 
{
  int
  intLen = aOrgStr.Length ;
  
  int start = 0 ;
  
  int end =
  intLen ;
  
  int single = 0;
  
  char[]
  chars = aOrgStr.ToCharArray( );
  for ( int i=0;
  i<
  chars.Length ;
  i++ )
  {
    if ( System.Convert.ToInt32( chars[i] )>255 )
    {
      start += 2;
    }
    else
    {
      start += 1;
      single ++ ;
    }
    if ( start >= aLength )
    {
      if (end % 2 == 0 )
      {
        if (single % 2 == 0)
        {
          end = i+1 ;
        }
        else
        {
          end = i ;
        }
      }
      else
      {
        end = i+1 ;
      }
      break ;
    }
  }
  
  string temp = aOrgStr.Sub
  string( 0, end );
  
  string temp2 = aOrgStr.Remove( 0,end );
  aAfterStr = temp2 ;
  return temp ;
}
运行结果 :

str = MutiSubString( "abc汉字字符", 5 , aAfterStr )
str = "abc汉"
aAfterStr ="字字符"

已了却一直以来使用 str.Length 把汉字当一个字符来用的毛病

时间: 2024-09-22 09:34:33

C#中汉字当2个字符计算的相关文章

计算字符串的长度(汉字按照两个字符计算)

 *  * @param   string      $str        字符串  *  * @return  int  */ function str_len($str) {     $length = strlen(preg_replace('/[x00-x7F]/', '', $str));     if ($length)     {         return strlen($str) - $length + intval($length / 3) * 2;     }    

JavaScript实现计算字符串中出现次数最多的字符和出现的次数

 这篇文章主要介绍了JavaScript实现计算字符串中出现次数最多的字符和出现的次数,本文直接给出实现代码,需要的朋友可以参考下     "计算出字符串中出现次数最多的字符是什么,出现了多少次?" 看到这个需求,我想大多数人应该首先想到的是转换成数组,再做处理,当然是可以解决问题的,然后这里提供一个巧妙的算法设计,无需转数组,可以很快解决问题,代码如下:   代码如下: var str = "adadfdfseffserfefsefseeffffftsdg"; v

字符编码-操作系统中汉字出现乱码

问题描述 操作系统中汉字出现乱码 服务器操作系统中出现如下问题:U盘插入后,U盘名称为乱码:在CMD控制台中不能键入汉字,复制进去的汉字会变成"?":在记事本中编辑汉字后保存,会提示"该文件含有Unicode格式的字符,当文件保存为ANSI编码的文本文件时,该字符将丢失.",需要在编码列表中选择Unicode项后才能保存.请问这些情况是什么原因造成的,如何解决?

Java 编程技术中汉字问题的分析及解决(转)

编程|汉字|解决|问题 Java 编程技术中汉字问题的分析及解决 段明辉自由撰稿人2000 年 11月 8日内容: 汉字编码的常识 Java 中文问题的初步认识 Java 中文问题的表层分析及处理 Java 中文问题的根源分析及解决 Java Servlet 中文问题的根源 修改 Servlet.jar 中文乱码的处理函数 参考资料 作者简介在基于 Java 语言的编程中,我们经常碰到汉字的处理及显示的问题.一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Jav

Java 编程技术中汉字问题的分析及解决(转自IBM)

编程|汉字|解决|问题 Java 编程技术中汉字问题的分析及解决 段明辉自由撰稿人2000 年 11月 8日 在基于 Java 语言的编程中,我们经常碰到汉字的处理及显示的问题.一大堆看不懂的乱码肯定不是我们愿意看到的显示效果,怎样才能够让那些汉字正确显示呢?Java 语言默认的编码方式是UNICODE ,而我们中国人通常使用的文件和数据库都是基于 GB2312 或者 BIG5 等方式编码的,怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢?本文将从汉字编码的常识入手,结合 Java 编

asp.net中C#获取字符串中汉字的个数的具体实现方法_实用技巧

符串可以包括数字,字母,汉字或者其他的字符.使用Char类型的IsDigit静态方法可以判断字符串中的字符是否为数字,使用Char类型中的IsLetter静态方法可以判断字符串中是否为字母.我们来实现一种方法来实现判断字符串中是否为汉字,通过此方法可以计算字符串中汉字的个数,运行效果如图: 首先根据效果图设置好Form的界面和内容,Box1.Text为输入的字符串,我们对该字符串的处理,来计算汉字的个数,双击Buton控件,编辑其单击事件代码. 我们看下汉字的Unicode范围,普遍给出了0x4

asp.net中C#获取字符串中汉字的个数实例

符串可以包括数字,字母,汉字或者其他的字符.使用Char类型的IsDigit静态方法可以判断字符串中的字符是否为数字,使用Char类型中的IsLetter静态方法可以判断字符串中是否为字母.我们来实现一种方法来实现判断字符串中是否为汉字,通过此方法可以计算字符串中汉字的个数,运行效果如图: 首先根据效果图设置好Form的界面和内容,Box1.Text为输入的字符串,我们对该字符串的处理,来计算汉字的个数,双击Buton控件,编辑其单击事件代码. 我们看下汉字的Unicode范围,普遍给出了0x4

JavaScript如何判断字符串长度(英文占1个字符,中文汉字占2个字符)

//计算字符串长度(英文占1个字符,中文汉字占2个字符) 方法一: String.prototype.gblen = function() { var len = 0; for (var i=0; i<this.length; i++) { if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) { len += 2; } else { len ++; } } return len; } 方法二: function strlen(str){

客户端发送-Servlet执行SQL语句把汉字插入到MySql,此时在MySql中汉字变成了方块,乱码

问题描述 Servlet执行SQL语句把汉字插入到MySql,此时在MySql中汉字变成了方块,乱码 在安卓客户端有一个注册登录程序,注册的时候,输入用户名密码,客户端用GET方式把表单数据传到Servlet,然后Servlet通过 String name=request.getParameter("username");String password=request.getParameter("password");把用户名密码得到,之后执行SQL语句把用户名密码