[Gambas-user] Select Case problem

Tobias Boege taboege at ...626...
Thu Mar 28 11:04:44 CET 2013


On Thu, 28 Mar 2013, Beno?t Minisini wrote:
> Le 28/03/2013 07:47, Bruce a ?crit :
> > On Thu, 2013-03-28 at 17:05 +1030, Bruce wrote:
> >> Hi,
> >>
> >> I am trying to parse a text file that contains key,value pairs like:
> >>          Name=Malarky
> >>          Size=10
> >>          BackImage[N]=sometext
> >>          FrontImage[S]=sometext
> >>          etc
> >> using a construct like
> >>          For idx = 0 to sourcearray.max
> >>            Select Upper(Split(SourceArray[idx],"+")[0])
> >>              Case "NAME"
> >>                blah blah
> >>              Case "SIZE"
> >>                blah blah
> >>              Case Like "BACKIMAGE[*]"
> >>                blah blah
> >>              Case Like "FRONTIMAGE[*]"
> >>                blah blah
> >>            End Select
> >>          Next
> >>
> >> This fails because Case Like "BACKIMAGE[*]" is being interpreted as a
> >> regular expression where I need to escape the regexp "[]" meaning.
> >>
> >> Trying to use escapes like
> >>    Case Like "BACKIMAGE\[*\]"
> >> fails as \[ is an unknown escape sequence.
> >>
> >> Any clues?
> >>
> >> tia
> >> Bruce
> >>
> >
> > Sorry, I have over simplified that.  I also need to discern lines like
> >          BACKIMAGE[*]
> > from lines like
> >          BACKIMAGE[*][*]
> > so
> >          Like "BACKIMAGE*"
> > wont work.
> >
> > B
> >
> 
> Case "BACKIMAGE[[]*]"
> Case "BACKIMAGE[[]*][[]*]"
> 
> Is that what you want?
> 
> Escaping '[' character in regular expression is done by using "[[]" or 
> "\\[". (see the documentation of LIKE).
> 

This expression (the first one of yours) would match

"BACKIMAGE[", "BACKIMAGE*" or "BACKIMAGE]"

but not

"BACKIMAGE[*]"

Using the []-LIKE notation, the correct expression would be

"BACKIMAGE[[][*][]]"

but I'd prefer the "\\" style for readability in this case. CMIIW.

Regards,
Tobi




More information about the User mailing list