> On Apr 3, 2015, at 11:04 AM, Quincey Morris 
> <quinceymor...@rivergatesoftware.com> wrote:
> 
> On Apr 3, 2015, at 04:00 , Charles Jenkins <cejw...@gmail.com> wrote:
>> 
>>    for char in String( self ).utf16 {
>>      if set.characterIsMember( char ) {
>>        return true
>>      }
> 
> Now we’re back to the place we started. This code is wrong. It fails for any 
> code point that isn’t representable a single UTF-16 code value, and it fails 
> for any grapheme that isn’t representable as a single code point.

No it doesn't.   Give it a test.

let acuteA: Character = "\u{e1}"                   // An "a" with an accent
let acuteAComposed: Character = "\u{61}\u{301}"    // Also an "a" with an accent

func howManyChars( c: Character) -> Int {
    var count = 0
    for char in String( c ).utf16 {
        count += 1
    }
    return count
}

howManyChars(acuteA)            // returns 1
howManyChars(acuteAComposed)    // returns 2

The original code will return true only if all code points map to white space.

Marc

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to