Re: Problem with rangeOfString and Umlauts
Re: Problem with rangeOfString and Umlauts
- Subject: Re: Problem with rangeOfString and Umlauts
- From: Keary Suska via Cocoa-dev <email@hidden>
- Date: Fri, 11 Mar 2022 13:48:48 -1000
NSRange is 0-based, so the 16th character is index 15. Also you might want to
use -localizedStandardRangeOfString: instead...
Keary Suska
Esoteritech, Inc.
"Demystifying technology for your home or business”
> On Mar 11, 2022, at 9:10 AM, Jack Brindle via Cocoa-dev
> <email@hidden> wrote:
>
> I just placed your code into a short tool in Xcode. What I get is interesting:
>
> prefix_len unsigned int 15
>
> Which his as you say. But:
>
> space_in_filename NSRange location=15, length=1
>
> Which is not the same as you say. This is in Xcode 13.2.1. Is something else
> going on?
>
> For the record, the body of main contains:
>
> @autoreleasepool {
>
> NSString *file_basename = @"Morgendämmerung (1)";
> NSString *info_item = @"Morgendämmerung";
>
> NSString * prefix = [info_item commonPrefixWithString:
> file_basename options: NSCaseInsensitiveSearch ];
> unsigned int prefix_len = (unsigned int) [prefix length];
>
> NSRange space_in_filename = [file_basename rangeOfString: @" "
> options:
> NSDiacriticInsensitiveSearch|NSCaseInsensitiveSearch|NSWidthInsensitiveSearch];
>
> NSLog(@"Break heere");
> }
>
> So what is different?
>
> Jack
>
>
>> On Mar 11, 2022, at 11:17 AM, Gabriel Zachmann via Cocoa-dev
>> <email@hidden> wrote:
>>
>>
>> Well, SSIA.
>> In more detail, I've got two strings:
>>
>> file_basename = @"Morgendämmerung (1)"
>> info_item = @"Morgendämmerung"
>>
>> This code
>>
>> NSString * prefix = [ info_item commonPrefixWithString: file_basename
>> options: NSCaseInsensitiveSearch ];
>> unsigned int prefix_len = (unsigned int) [prefix length];
>>
>> yields prefix_len = 15
>> as it should.
>>
>> The problem arises with this line of code:
>>
>> NSRange space_in_filename = [file_basename rangeOfString: @" " options:
>> NSDiacriticInsensitiveSearch|NSCaseInsensitiveSearch|NSWidthInsensitiveSearch];
>>
>> which yields space_in_filename.location = 16 !
>>
>> This thwarts the rest of the code, which, in this case, would expect
>> space_in_filename.location = 15.
>>
>> Needless to say that with strings that do not contain Umlauts, the call of
>> rangeOfString:options: works as expected, i.e., in the above example
>> space_in_filename.location is as expected (i.e., first character has
>> location=0).
>>
>> I have also tried localizedStandardRangeOfString, with the same effect.
>>
>> Any ideas what I can do?
>>
>>
>> Best regards, Gabriel
>>
>>
>> _______________________________________________
>>
>> Cocoa-dev mailing list (email@hidden)
>>
>> Please do not post admin requests or moderator comments to the list.
>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>
>> Help/Unsubscribe/Update your Subscription:
>>
>> This email sent to email@hidden
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden