Stefano Crocco
11/6/2007 1:08:00 PM
Alle marted=EC 6 novembre 2007, Jari Williamsson ha scritto:
> What't the most elegant way to find a substring match at the very start
> of a string?
>
> Currently I'm using this approach:
> a =3D "long string"
> key =3D "long"
> if a[0, key.length] =3D=3D key then
>
> ...while this might look ok, it doesn't look so good with constant string=
s:
> if a[0, 4] =3D=3D "long" then
> or
> if a[0, "long".length] =3D=3D "long" then
>
> I guess what I'm looking for is something like:
> if a.startswith("long") then
>
> Is there any such solution?
>
>
> Best regards,
>
> Jari Williamsson
You can use a regexp:
if a.match /^long/ then
=2E..
The ^ at the beginning of the regexp means that the regexp should be matche=
d=20
at the beginning of the string (actually, of the line. If your string is=20
multiline, you need to use \A to match the beginning of the string).
If the string you want to look for is stored in a variable, you can use str=
ing=20
interpolation inside the regexp:
str =3D "long"
if a.match /^#{str}/ then
Of course, this can cause problems if str contains characters which are=20
special in a regexp. In this case, you need to quote it:
str =3D "long"
if a.match /^#{Regexp.quote(str)}/ then
I hope this helps
Stefano