有一个Textbox,长度为30Pixel.从数据库NText字段中读取一个字符串,该字符串中包含繁体中文,或简体中文,或日文,或大写字母,或小写字母,或数字等等.
怎样截取该字符串使它填入Textbox长度刚好?

解决方案 »

  1.   

    用System.Text.Encoding.Default.GetByteCount( strString );
    得到实际长度(一个中文占2个位置),但还是会有一定问题,因为在UTF-8编码中,一个中文的宽度并不等于两个英文的长度。
      

  2.   

    参考一下这个:http://blog.mvpcn.net/webdiyer/archive/2004/11/11/5420.aspx
      

  3.   

    吴旗娃,你给的那个还是有我说的那个问题啊。在Unicode的页面里面你去看看一个W字符占多宽?都快有一个汉字那么长了。
      

  4.   

    在UTF-8编码中,一个中文的宽度并不等于两个英文的长度。
      

  5.   

    Unicode编解码
    再测一下一个字符的长度
    应该可以的
      

  6.   

    各位老大,
    以下是我根据实际长度的比较而写的一段,基本还可以,但像 v192(魔渡众生)说的一样,还是有一点差别:
    Private Function GetStrLength(ByVal str As string, ByVal length As single) As String
       dim firstB As string
       If Microsoft.VisualBasic.Trim(str) = "" or length = 0 Then
          Return ""
       End If
       dim i as integer = 0
       dim asc as integer
       Do While length > 0
           i = i + 1
           firstB = Microsoft.VisualBasic.Mid(str, i, 1)
           asc = Microsoft.VisualBasic.AscW(firstB)
           if asc < 0 or asc > 255 then
      length = length - 2.55
           else
               if asc >= 65 and asc <= 90 then
          length= length - 1.5
               else
          length = length - 1
               end if
           end if
        Loop
        Return Microsoft.VisualBasic.Left(str,i)
    End Function
      

  7.   

    倒,你还根据asc码一个个丈量过来啊!那你还不如用Autosize的控件处理呢!