Re: .contains question

[email protected] (ToddAndMargo via perl6-users)
Newsgroups perl.perl6.users
Message-ID <[email protected]>
> "so" will collapse the junction into a Bool.
> "say" will append a \n for you, so you don't have to.
> 
>> On 11 Dec 2023, at 01:52, ToddAndMargo via perl6-users <[email protected]> wrote:
>>
>>>> On 10 Dec 2023, at 21:36, ToddAndMargo via perl6-users <[email protected]> wrote:
>>>>
>>>> Hi All,
>>>>
>>>> my Str $x="abc3defg"; if $x.contains( "a" || "b" || "3" )  { print "True\n"; } else { print "False\n" };
>>>> True
>>>>
>>>> Is there a way to tell .contains that you want to know
>>>> if any of a sequence characters is in a string other that
>>>> repeating || over and over.  Any [a..z] or [0..9] option?
>>>>
>>>> Many thanks,
>>>> -T
>>
>> On 12/10/23 15:24, Elizabeth Mattijsen wrote:
>>> my @letters = <a b 3>;
>>> if $x.contains(any @letters) {
>>
>>
>> Hi Elizabeth,
>>
>> Very interesting.  Problem: I was looking for one answer, not many
>>
>>> my $x="abc45def";my @y=<a b c d e f g h i j 1 2 3 4 5>; print $x.contains(any @y) ~ "\n";
>> True
>> True
>> True
>> True
>> True
>> True
>> False
>> False
>> False
>> False
>> False
>> False
>> False
>> True
>> True

On 12/11/23 01:11, Elizabeth Mattijsen wrote:
 > my $x="abc45def";
 > my @y=<a b c d e f g h i j 1 2 3 4 5>; say so $x.contains(any @y);

Hi Elizabeth,

Awesome!  Thank you!

I usually stay away from `say` as in my longer programs, I have found 
that when using `say` for debugging, it has been known to print out the 
previous value of a variable and not the current value.  `print` does 
not do this.  This is why you see me using `print` so often.  And
I can type, so the extra finger motions do not bother me.  Capitol 
letter also do not for the same reason.

Some tests!

my $x="abc45def"; my @y=<a b c d e f g h i j 1 2 3 4 5>; say so 
$x.contains(any @y);
True

my $x="abc45def"; my @y=<g h i j 1 2 3 7 8>; say so $x.contains(any @y);
False

my $x="abc45def"; my @y=<g h i j 1 2 3 4 5>; say so $x.contains(any @y);
True

my $x="abc45def"; my @y=<g h i j 1 2 3 7 8>; say so $x.contains(any @y);
False


Oh now I am really pushing it with these (note the `all` in the
second one)!


my $x="abc45def"; say so $x.contains(any <g h i j 1 2 3 7 8>);

my $x="abc45def"; say so $x.contains(all <g h i j 1 2 3 7 8>);
False

my $x="abc45def"; say so $x.contains(any <a b c d e f g h i j 1 2 3 4 5>);
True


-T
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.