对一包含有中英文的字符串进行搜索(like 或 Instr)
如何使搜索到的中文是 case sensitive 但搜索到的英文是 case insenditive?

解决方案 »

  1.   

    instr:
    以Long型返回定一个字符串在另一字符串中最先出现的位置.其中start是可选的数值表达式,设置每次搜索的起点.如果省略,将从第一个字符的位置开始.如果start包含Null,将发生错误.如果指定了compare参数,则一定要有start参数.string1是必需的参数,用于接受搜索的字符串表达式.string2是必需的参数,代表被搜索的字符串表达式.compare是可选的比较方式:
    vbBinaryCompare:执行一个二进制比较.'大小写敏感
    vbTextCompare:执行一个按照原文的比较.'大小写不敏感
    vbDatabaseCompare:仅适用于Microsoft Access,执行一个基于数据库中信息的比较.
    试着运行以下代码:
    Dim strtemp As String
    strtemp = "tTEMPtempYTFTFTFTuyyygggggggggggf"
    Dim i As Long
    i = InStr(1, strtemp, "T", vbBinaryCompare)
    MsgBox i
    i = InStr(1, strtemp, "T", vbTextCompare)
    MsgBox i至于中文,我不知道你的大小写不敏感是什么意思,中文也分大小写吗?还是说查“一”,查到“壹”也可以,如果是这样的话,就要麻烦一些了。
      

  2.   

    Private Sub Command1_Click()
    Print InStr(1, "È˺ÍÈë", "Èë", 1)
    Print Left("ÈË", 1), Right("ÈË", 1)
    Print Left("Èë", 1), Right("Èë", 1)
    End Sub
      

  3.   

    Print InStr(1, "人和入", "入", 1) 得 1。 要又GB, 被要 copy 我的。
      

  4.   


       楼上的意思是,"人和入" 近似,所以用  人 来查, 入 也可以得到?
       这个比较夸张了点。
      
       要么你做一个转换,当用人来查时 ,你查两次,
       int1=InStr(1, "人和入", "入", 1) 
       int2=InStr(1, "人和入", "人", 1) 
       if int1<1 then
          Print int2
       else int2<1 then
          Print int1
       else    
         Print iif(int1>int2,int2,int1)
       endif
      

  5.   

    人“和”入"一个是大写一个小写! 没听过?看看组成“人“和”入"的字符你就明白为什么我要这样说啦。
    看来你们都没有试过,InStr(1, "人和入", "入", 1) (或 Like) 能由"入"查到"人"! "因为" InStr(1, "人和入", "入", 1) 是 case insensitive. 改为 InStr(1, "人和入", "入", 0)就没有这样的问题。
    我不希望得到这样的结果,我要搜索到的中文是 case sensitive,但同时我又希望但搜索到的英文是 case insenditive, 所以来问你们。
      

  6.   

    >确认一下,人 是 人民的人? 入 是进入的入?
    是的.>这边没有出现你的情况
    那俺也糊涂了,试过InStr(1, "人和入", "入", 1)?
    有谁愿意试一下我的试验程序,留下Email.
      

  7.   


      来这儿坐擂吧。
      出现你的情况的,估计为0;
      出现我的情况的InStr(1, "人和入", "入", 1)=3  ,估计100%  hiahia
      

  8.   

    koa3000(koa):Hahaha,坐擂,有意思~~~
    你的情况 InStr(1, "人和入", "入", 1)=3  估计?试过?
    如果试过,请注意,在GB,Len("人和入")=6, 你用的是GB吗?
      

  9.   

    你别汗了, 我很菜:
    GB: 组成中文的一种办法,用两个字符组成一个汉字. 在VB6用这办法, 在网上用UnitCode?(请高手讲解一下.)
    比如:
    Print Asc(Mid("人", 1, 1)), Asc(Mid("人", 2, 1))
    Print Asc(Mid("入", 1, 1)), Asc(Mid("入", 2, 1))
    会得到:
    200 203
    200 235
      

  10.   


     VB6 你在那儿选择的采用GB方案?
      

  11.   

    试一下Len("人")看你能得到1还是2?
    得2就是GB了。
    你用的中文Windows98?XP?
      

  12.   

    有谁能帮我?
    我可把压缩了的Project给你寄去(12k)。
      

  13.   

    我的电脑是没出现楼主说的情况啊!
    InStr(1, "人和入", "入")=3
    Len("人")=1
    vb中的字符默认是unicode的。
    GB和Big5就是编码的不同吧,都是属于unicode的呀!
      

  14.   

    boywang(大力水手):你能寄压缩了的 Project 给我吗:
    [email protected]
    我可把我的压缩了的Project给你寄去(12k)。