a="abc1230c"
a="abc杜30c"
a="abc小小c"a的值为如上,我需要取出的值为"1230","杜30","小小"所以我用了mid(a,4,4)="1230"
以上是正确的当我用此方法到第二条a="abc杜300"时
mid(a,4,4)="杜30c"请问如何我才能把正确的值取出
急急急!

解决方案 »

  1.   

    Mid(a, 4, Len(a) - 4)
      

  2.   

    由于VB里采用Unicode,故一个汉字使用时长度和英文一样为一,所以不能用
    mid(a,4,4)="1230",改为这个Mid(a, 4, Len(a) - 4),表示从第4位开始取总长减去
    abc 加上 c的长即Len(a) - 4
      

  3.   

    楼上说得对,用Mid(a, 4, Len(a) - 4)
      

  4.   

    left(right(a,len(a)-3),len(a)-4)看明白沒?
      

  5.   

    strconv(midB(strconv(a,vbFromUnicode),4,4),vbUnicode)
      

  6.   

    如果能够保证你需要提取的字符串中不包含需要去除的字符,可以使用下面这个办法
    Private Function test(byval strinput As String) As String
        test = Replace(Replace(strinput, "abc", ""), "c", "")
    End Function测试用例
    Debug.Print test("abc1230c")
    Debug.Print test("abc杜30c")
    Debug.Print test("abc小小c")输出
    1230
    杜30
    小小
      

  7.   

    建议用这个:
    strconv(midB(strconv(a,vbFromUnicode),4,4),vbUnicode)
      

  8.   

    使用正则表达式,我正则不太好,写得不好,正则要是想优化的话 问别人吧
    '先引用Microsoft VBScript Regular Expressions
        Dim re As New RegExp
        re.IgnoreCase = True
        re.Global = True
       
        re.Pattern = "^abc"
        Text1.Text = re.Replace(Text1.Text, "")
        re.Pattern = "c$"
        Text1.Text = re.Replace(Text1.Text, "")