在VB中一個中文字佔一個字節
字符串STR="ABC壮志饥123餐胡CD虏肉DEF"
怎樣能夠將以上的字符串截取成隻有10字節長度的子串呢(遇到中文時當作兩個字節)?
則最終結果應為子字符串STR1="ABC壮志饥1"

解决方案 »

  1.   

    Private Sub Command4_Click()
    Dim STR As String
    STR="ABC壮志饥123餐胡CD虏肉DEF"
    MsgBox StrConv(MidB(StrConv(STR, vbFromUnicode), 1, 10), vbUnicode)
    End Sub
      

  2.   

    Public Function test()
        Dim str As String
        str = "df要工中在为林d吉kl为估"
        Debug.Print StrConv(LeftB(StrConv(str, vbFromUnicode), 10), vbUnicode)
    End Function
      

  3.   

    上楼的是对的 
    用left,right ,mid 
    函数可以搞定
      

  4.   

    我將tztz520(午夜逛街)的代碼改為:
    Dim STR As String
    STR="ABC壮志饥123餐胡CD虏肉DEF"
    STR1 = StrConv(MidB(StrConv(STR, vbFromUnicode), 1, 10), vbUnicode)
    STR2 = StrConv(MidB(StrConv(STR, vbFromUnicode), 11, 20), vbUnicode)
    Debug.Print STR1 & "+" & STR2得到的結果是:  
    ABC壮志饥1+23餐胡CD虏肉DEF
    而我希望的結果是:
    ABC壮志饥1+23餐胡CD虏
    是否STR2寫錯啦,怎么改呢?
      

  5.   

    Dim STR As String
    Dim STR1 As String, STR2 As StringSTR = "ABC׳־¼¢123²ÍºúCD²ÈâDEF"
    STR1 = StrConv(MidB(StrConv(STR, vbFromUnicode), 1, 10), vbUnicode)
    STR2 = StrConv(MidB(StrConv(STR, vbFromUnicode), 11, 10), vbUnicode)'将20改为10
    Debug.Print STR1 & "+" & STR2
      

  6.   

    我搞錯Mid(string, start[, length])的用法啦。問題解決啦