Replacing tango.text.Ascii.isearch

Patrick Schluter Patrick.Schluter at bbox.fr
Thu Oct 13 14:15:02 UTC 2022


On Thursday, 13 October 2022 at 08:27:17 UTC, bauss wrote:
> On Wednesday, 5 October 2022 at 17:29:25 UTC, Steven 
> Schveighoffer wrote:
>> On 10/5/22 12:59 PM, torhu wrote:
>>> I need a case-insensitive check to see if a string contains 
>>> another string for a "quick filter" feature. It should 
>>> preferrably be perceived as instant by the user, and needs to 
>>> check a few thousand strings in typical cases. Is a regex the 
>>> best option, or what would you suggest?
>>
>> https://dlang.org/phobos/std_uni.html#asLowerCase
>>
>> ```d
>> bool isearch(S1, S2)(S1 haystack, S2 needle)
>> {
>>     import std.uni;
>>     import std.algorithm;
>>     return haystack.asLowerCase.canFind(needle.asLowerCase);
>> }
>> ```
>>
>> untested.
>>
>> -Steve
>
> This doesn't actually work properly in all languages. It will 
> probably work in most, but it's not entirely correct.
>
> Ex. Turkish will not work with it properly.

Greek will also be problematic. 2 different lowercase sigmas but 
only 1 uppercase. Other languages that may make issues, German 
where normally ß uppercases as SS (or not) but not the other way 
round, but here we already arrived to Unicode land and the 
normalization conundrum.




More information about the Digitalmars-d-learn mailing list