我要按照字符串占用位置(长度)打印,如"dddd"只打印四个英文字符长度,但打印中文如"第底"时也应打印四个英文字符长度,因为每个中文占用两个英文字符长度,如我的字符串中既有中文又有英文我应该如何知道字符串占用位置(长度)呢,PB中就有两个不同的长度函数,VB除了len还有吗?

解决方案 »

  1.   

    Type CustomerRecord   ' 定义用户自定义的数据类型。
       ID As Integer   ' 将此定义放在常规模块中。
       Name As String * 10
       Address As String * 30
    End TypeDim Customer As CustomerRecord   ' 声明变量。
    Dim MyInt As Integer, MyCur As Currency
    Dim MyString, MyLen
    MyString = "Hello World"   ' 设置变量初值。
    MyLen = Len(MyInt)   ' 返回 2。
    MyLen = Len(Customer)   ' 返回 42。
    MyLen = Len(MyString)   ' 返回 11。
    MyLen = Len(MyCur)   ' 返回 8。
      

  2.   


    Option ExplicitPrivate Sub Command1_Click()
            MsgBox "TEXT的文字长度是:" & Label1.Width
            
    End SubPrivate Sub Form_Load()
           Label1.AutoSize = True
           Label1.Caption = ""
           Label1.Visible = False
           Label1.Font.Name = Text1.Font.Name
           Label1.Font.Size = Text1.Font.Size
           Label1.Font.Bold = Text1.Font.Bold
    End SubPrivate Sub Text1_Change()
           Label1.Caption = Text1.Text
    End Sub
      

  3.   


    用API:Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" ( _ 
     ByVal lpString As String) As Long
      

  4.   

    Private Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" ( _
               ByVal lpString As String) As LongPrivate Sub Command1_Click()
        Dim strTmp As String
        strTmp = "I·þÁËU"
        MsgBox "I·þÁËU µÄ³¤¶ÈÊÇ:" & lstrlen(strTmp)
    End Sub
      

  5.   

    刚才出现乱码了,重发一次:Private Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" ( _
               ByVal lpString As String) As LongPrivate Sub Command1_Click()
        Dim strTmp As String
        strTmp = "I服了U"
        MsgBox "I服了U 的程度是:" & lstrlen(strTmp)
    End Sub
      

  6.   

    msgbox lenb(strconv("中国2"),vbfromunicode)
      

  7.   

    Dim N As Long
    N = LenB(StrConv(Text1.Text, vbFromUnicode))
    MSGBOX N
      

  8.   

    还可以用api函数lstrlen,或者将字串保存为文件后,用filelen取出文件大小(文件大小即为所求)
      

  9.   

    回复人: nik_Amis(Azrael) ( ) 信誉:119  2004-03-31 18:41:00  得分:0 
     
     
      msgbox lenb(strconv("中国2"),vbfromunicode)
     回复人: tztz520(宏宏) ( ) 信誉:100  2004-04-02 08:50:00  得分:0 
     
     
      Dim N As Long
    N = LenB(StrConv(Text1.Text, vbFromUnicode))
    MSGBOX N
      
     
    蹭分