[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