用Instr得到位置后再用Mid取。

解决方案 »

  1.   

    用i=instr(1,aa,"好朋友“),i 返回的是" "中在aa的第幾個位位置
     然後用mid() left() right() 
    其他同up
      

  2.   

    Private Sub Command1_Click()
    Dim str As String
    str = "11111 这里是好地方22223我们是好朋友"
    Dim i As Integer
    For i = 1 To Len(str)
        MsgBox Asc(Mid(str, i, 1))
    Next
    End Sub老兄,你担心什么问题呢,是不是感觉不能够区分出汉字和字母啊。
    用上面判断ASC码的方式可以判断是不是汉字。
    你用的MID函数,是不会把字切掉一半的,MIDB函数到是有可能。我感觉你是错误的一位VB,像C一样,会把汉字当成两个字节长度来处理了,其实不是那样的。
      

  3.   

    用Mid 函数, 可能会出错?????
    什么意思?不明白
      

  4.   

    up
    没有问题,用Mid吧
    ================================================================
    我是一个兵,来自老百姓。
      

  5.   

    如果你知道字符串中你需要的字符的位置,可以用MID来处理。
    这样会很方便;
    但如果你不知道字符串中你需要的字符的位置,那用MID就有些困难了。
    MID将中文字视为一个位,与英文字符一样,即:
    AA="jkl在k在" 
    mid(AA,4,2)="在k"
    mid(AA,4,3)="在k在"
      

  6.   

    Visual Basic 32-bit 版本的字串处理采用 Unicode,在处理一般的字符串的时候没有问题,可以直接把一个中文当成一个字符,
    dim aa as string
    aa ="11111这里是好地方22223我们是好朋友"
    msgbox mid(a,6,2)  '显示"这里"
    msgbox mid(a,len(a)-2,3)'显示"好朋友"
    但是对于纯文字的数据文件,千万不能这样,要先转换成为Ansi格式才能用
    给分
      

  7.   

    如果你不知道位置,那么用instr函数可以获得,还是那句话,简单的消息串应用可以采用Unicode
    InStr(aa, "这里")
    InStr(aa, "好朋友")
    直接用可以了
      

  8.   

    确实是因为LEFT,RIGHT,MID等函数不能区分汉字和一般字符引起的。
    自己写一个SuperMid()就可以了