Create a case-insensitive startsWith

weaselcat via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Apr 28 15:08:29 PDT 2015


On Tuesday, 28 April 2015 at 21:45:10 UTC, PhilipDaniels wrote:
> Beginner question. Given
>
>   if (startsWith(input, "0x", "0X"))
>
> How do I turn that into a case-insensitive startsWith? 
> startsWith says it takes a predicate but I can't figure out how 
> to pass it one. The examples all use "a == b" !? These attempts 
> below, and other things I have tried, fail with "cannot deduce 
> function from argument types".
>
>   if (startsWith!"icmp(a, b) == 0"(input, "0x"))
>   if (startsWith!"std.uni.icmp(a, b) == 0"(input, "0x"))
>   if (startsWith!((a,b) => icmp(a,b) == 0)(input, "0x"))

I believe the issue is that the predicate expects a boolean, icmp 
returns an int. Try a == toLower(b) as your predicate(there's 
probably a better solution somewhere hidden in phobos though.)


More information about the Digitalmars-d-learn mailing list