Results 1 to 4 of 4

Thread: Strings (actually difficult)

  1. #1

    Thread Starter
    Hyperactive Member Zaphod64831's Avatar
    Join Date
    Mar 2000
    Posts
    268
    I am making an HTML editor which is able to load html files. In order to load it correctly I need to detect what's between certain tags, such as the title and stuff. What I need is a function that will make everything lowercase which is between several less-than and grater-than symbols, yet ignores whatever is between quotations ("). I.e.

    <this is all lowercase "BuT ThIs iS IgNoReD" this is still lowercase> ThIs iS IgNoReD, ToO <yet again this is lowercase>

    Can anyone help?
    Email: [email protected]

    Home Page: www.olemac.net/~hutch

    I'm bored, VERY bored, and I got bored with my sig. So I changed it to this.

  2. #2
    transcendental analytic kedaman's Avatar
    Join Date
    Mar 2000
    Location
    0x002F2EA8
    Posts
    7,221
    I'm not sure what you want to do, when i looked at your example, well here's some functions for you
    Code:
    Lcase(text) will convert it lowercase
    Ucase(text) will convert it uppercase
    instr(text,d) will search for d in text
    instr(x,text,d) will search for d in text, starting from x
    mid(text,x) will return the rest of text from position x
    mid(text,x,l) will return a part of a string starting from x and with the length l or shorter if in text is too short.
    Use
    writing software in C++ is like driving rivets into steel beam with a toothpick.
    writing haskell makes your life easier:
    reverse (p (6*9)) where p x|x==0=""|True=chr (48+z): p y where (y,z)=divMod x 13
    To throw away OOP for low level languages is myopia, to keep OOP is hyperopia. To throw away OOP for a high level language is insight.

  3. #3

    Thread Starter
    Hyperactive Member Zaphod64831's Avatar
    Join Date
    Mar 2000
    Posts
    268
    It's difficult to explain, but all I need is for a sub or function that will go through a string and convert everything to lowercase EXCEPT for whatever's between > and < and " and ".

    The example I gave in the last post illustrated what I need, but if you don't have any HTML experience then it becomes a little difficult to understand...

    I'll just start over here...

    I am building an HTML editor which splits up an HTML file into its respective parts, ie the title and body. I only want to return what's BETWEEEN the <TITLE> and </TITLE> tags and the <BODY> and </BODY> tags. I've already made a function that would do that, except for the fact that I may tell it to look between <BODY> and </BODY> but the file may contain <Body> and </Body> or even <body> and </body>. This won't allow me to load the file correctly. I want to make whatever's between the < and > lowercase, yet leave alone whatever's between " and ". An example would be the body tag. The body tag usually contains a background attribute, which holds the filepath in quotations ("). The filepath MUST be the proper case, or it would be unable to locate the file. And I cannot make whatever's outside the < and > tags lower case or it would cause all the normal text to be lowercase.

    I hope I've explained this will enough, I'm not that good at specifics and stuff like that. And strings are definitely not my best area. Actually, nothing's my best area.

    Please help if you can, and denniswrenn, you know what I want, you think you can help me clarify?
    Email: [email protected]

    Home Page: www.olemac.net/~hutch

    I'm bored, VERY bored, and I got bored with my sig. So I changed it to this.

  4. #4
    Hyperactive Member
    Join Date
    Jun 2000
    Location
    Auckland, NZ
    Posts
    411

    Is this what you mean?

    I made this to change the text to Ucase in my test as the example you gave doesn't have any text to change...

    It's a very simple example and as I mention it won't take account of nested "<". If thats important then you should be able to modify it yourself. I don't know HTML so I can't tell if it is relevant.

    Regards

    Paul Lewis

    Code:
    make controls called txtSrc (Text), txtDest (Text), cmdDoIt (button).  Paste the text into txtSrc and press the button.
    
    Private Sub cmdDoIt_Click()
      txtDest.Text = Parse(txtSrc.Text)
    End Sub
    
    Public Function Parse(srcText As String) As String
      ' takes no account of mismatched <> or unfinished " chars
      ' looks for text between <> BUT NOT between "" and changes it to
      ' lower case
      Dim mySrc, myDst, tmp As String
      Dim bracketCount As Integer
      mySrc = srcText
      Dim c As Long
      Dim inQuote As Boolean
      
      bracketCount = 0
      inQuote = False
      For c = 1 To Len(mySrc)
        tmp = Mid(mySrc, c, 1)
        Select Case tmp
        Case Is = "<"
          myDst = myDst & tmp
          bracketCount = bracketCount + 1
        
        Case Is = ">"
          myDst = myDst & tmp
          bracketCount = bracketCount - 1
        
        Case Is = Chr$(34) ' easier to read than """
          myDst = myDst & tmp
          inQuote = Not inQuote
          
        Case Else
          If (bracketCount > 0) And Not inQuote Then
            myDst = myDst & LCase(tmp)
          Else
            myDst = myDst & tmp
          End If
        End Select
        
      Next
      Parse = myDst
    
      
    End Function

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width