您的位置:程序门 -> vb -> 基础类



关于string类型的比较


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于string类型的比较[已结贴,结贴人:zhengfeihu]
发表于:2007-06-12 15:54:28 楼主
我定义了两个string类型的变量,从数据库里提出数据到这两个变量,为什么我提的数据是一样的,但是是从不同的表里提的,比较之后发现返回不相等
                dim   dan_1(10)   as   string
                dim   dan_2(10)   as   string                           'string类型的数组
              。。。。。。
              。。。。。。
              。。。。。。
                msgbox(dan_1(0))
                msgbox(dan_2(0))                       ‘显示两变量是都是“b”

                if   equals(trim(dan_1(0)),   trim(dan_2(0)))   then            
                        fenshu   =   fenshu   +   2
                end   if
                msgbox(fenshu)
得到的fenshu值为0
发表于:2007-06-12 16:14:341楼 得分:0
比较一下长度:
debug.print   len(trim(dan_1(0)))
debug.print   len(trim(dan_2(0)))
发表于:2007-06-12 16:24:032楼 得分:0
用trim试试看
if   trim(str1)=trim(str2)
发表于:2007-06-12 16:34:003楼 得分:0
谢谢上面兄弟,我取了他们的长度,  
trim(dan_2(0).length返回值是3,
而trim(dan_1(0).length返回值是1,
为什么会有这样的结果呢?用msgbox显示出来他们都是b呀,而且数据库中也都是b呀?
请教!!!!!!!
发表于:2007-06-12 16:38:264楼 得分:0
用stripnulls   instead   of   trim:
private   function   stripnulls(byval   sstring   as   string)   as   string

dim   lpos   as   long

        lpos   =   instr(sstring,   vbnullchar)

        if   (lpos   =   1)   then
                stripnulls   =   vbnullstring
        elseif   (lpos   >   1)   then
                stripnulls   =   left$(sstring,   lpos   -   1)
                exit   function
        end   if

        stripnulls   =   sstring

end   function
发表于:2007-06-12 16:40:185楼 得分:0
dan_1(10)和dan_1(10)分配的字符空间不同吧?
发表于:2007-06-12 17:21:446楼 得分:0
感觉4楼大哥的说得很有道理,看了你的代码让我受益非浅,但是我也试过了你的代码,得出来的结果好像还是不对,
我跟踪了一下程序,在比较时
如:
if   stripnulls(dan_1(0))=stripnulls(dan_2(0))  
并没有进入到函数  
private   function   stripnulls(byval   sstring   as   string)   as   string
的if..else语句里面,好像还是有点问题
发表于:2007-06-12 19:47:197楼 得分:10
你可以用msgbox( "_ "   &   strval   &   "_ ")来看看,再用ascii()查看asc码。
如果数据库里面字段用char类型,取出来要trim
发表于:2007-06-12 20:17:328楼 得分:10
stripnulls我用了多年。绝对没问题。
trim(dan_2(0).length返回值是3,里面可能有2个vbnullchar
再试试下面的:
public   function   stripsinglenull(byval   strin   as   string)   as   string
      dim   nul                             as   long
      nul   =   instr(strin,   vbnullchar)
      select   case   nul
            case   is   >   1
                  stripsinglenull=   left$(strin,   nul   -   1)
            case   1
                  stripsinglenull=   " "
            case   0
                  stripsinglenull=   trim$(strin)
      end   select
end   function

public   function   stripdblnull(byval   strin   as   string)   as   string
      dim   nul                             as   long
      nul   =   instr(strin,   vbnullchar   &   vbnullchar)
      select   case   nul
            case   is   >   1
                  stripdblnull   =   left$(strin,   nul   -   1)
            case   1
                  stripdblnull   =   " "
            case   0
                  stripdblnull   =   trim$(strin)
      end   select
end   function


快速检索

最新资讯
热门点击