textbox中有ACF="0" AF="1" CM="0" DISF="0" ERF="" OF="1" SO="3"
现在按执行按钮之后,先要对textbox中的这段值进行check首先要保证双引号配对出现
这个已经实现了,If UBound(Split((Form1.Text1), """")) Mod 2 <> 0 Then
现在又要求特定的值必须要被双引号引用,如果没有被双引号引用的话就出MSGBOX--"输入的格式有问题"
注意双引号引用的不一定都是数字。
刚才问了LEADER 他说要看空格之前和等号之后是不是有双引号。我还是不清楚,请各位大侠帮帮忙!!
谢谢!!

解决方案 »

  1.   

    If UBound(Split((Form1.Text1), """")) <> UBound(Split((Form1.Text1), "=")) Then
        MsgBox "格式不正确!!", vbExclamation, c_strAppTitle
        Exit Function
    End If不知道我这样做对不对
      

  2.   

    先用等号进行Split,然后检查:除了第0段以外、其它都必须包含两个双引号。
      

  3.   

    可以将这些参数值分别放在多个textbox中输入啊(比如上面是7个参数就放在7个textbox中输入,只要输入数字或字母就行了),这样不用判断双引号的问题了,而且很容易判断输入的参数是否正确。
      

  4.   

    Fanks:项目都要求好了式样,我们只能按照式样做,不能改式样啊
      

  5.   

    Dim strTmp As StringstrTmp = Text1
    strTmp = Replace(strTmp, "=""", ":") '将等号加引号用冒号替换
    strTmp = Replace(strTmp, """ ", ";") '将空格加引号用分号替换
    If Right(strTmp, 1) = """" Then strTmp = Left(strTmp, Len(strTmp) - 1) '去掉最后的引号(可能没有空格)如果 strTmp 中还含有等号或引号等,则格式有错误。
    strTmp = "ACF:0;AF:1;CM:0;DISF:0;ERF:;OF:1;SO:3"取值时,可以先用;分割,再循环0至Ubound(你的数组)用:分割。
      

  6.   

    这样啊,那你textbox中的参数个数是固定的7个吗?还有这样 ACF="" 算是符合要求吗?
      

  7.   

    private s as string
    s=Split((Form1.Text1), """") 
    这样如果Form1.Text1的内容为ACF="0" AF="1" CM="0" DISF="0" ERF="" OF="1" SO="3" 
    那么s(0)= "ACF="  s(1)="0" ...也就是分割出来的字符串组为ACF=, 0, AF=, 1,CM=,......
    所以Ubound=14
    你看这样还能明白,不懂的再说
      

  8.   

    不好意思,我上面写错一点纠正一下
    private s() as string
      

  9.   

    ACF="0" AF="1" CM="0" DISF="0" ERF="" OF="1" SO="3" 
    这个是从一个INI文件中读取的,不是固定的。是可以改变的
      

  10.   

    INI 文件是标准格式吗?如果是,那还在 TextBox 这里转悠什么?
      

  11.   

    个数不是固定的,但是ACF="" 这样的格式是可以的   引号里面可以为空
      

  12.   


    从INI中读取  然后初始化显示在textbox中。
      

  13.   

    Function CheckFormat(byval sValue as string) as boolean
        dim a() as string, i as long
        a = split(sValue, "=")
        for i=1 to UBound(a)
            if UBound(Split(a(i), """")) <> 2 then exit function
        next    CheckFormat = True
    end function
      

  14.   

    我上面只是告诉你UBound和Split函数的用法  你textbox中的内容当然可以改变,
    到现在还是不明白你问题的核心,希望你能说详细一点,包括你要实现的功能==
    比如  Split((Form1.Text1), """")分割出来干什么用 
    If UBound(Split((Form1.Text1), """")) Mod 2  <> 0 Then 有什么意义
      

  15.   

    try:
    dim s as string
    s=text1.text & chr(32)
    if ubound(split(s,"="""))<>ubound(split(s,""" ")) then
        msgbox "双引号不匹配 "
    end if
      

  16.   


    只用双引号的数量来判断应该不行,正则或用like更好吧:Function CheckFormat(ByVal sValue As String) As Boolean
        Dim a() As String, i As Long
        a = Split(Trim(sValue), Chr(32))
        For i = 0 To UBound(a)
            If Not (Trim(a(i)) Like "?*=""*""") Then Exit Function
        Next
        CheckFormat = True
    End Function(不好意思借用下老鸟的代码......)
      

  17.   


    上面一大片的代码都在把几个双引号连用,这样的写法正确吗?没语法错误?!
    -_-!
    楼主试一下这个代码:
    Dim strTxt$
    strTxt = Trim$(Form1.Text1.Text)
    If (UBound(Split(strTxt, "=" & Chr$(34))) <> (UBound(Split(strTxt, Chr$(34) & " ")) + 1)) Then
        MsgBox "格式不正确!!", 48, c_strAppTitle
        Exit Function
    End If