[swift-evolution] Pitch: String Index Overhaul
dabrahams at apple.com
Tue May 30 16:53:34 CDT 2017
on Tue May 30 2017, Jordan Rose <jordan_rose-AT-apple.com> wrote:
> My knee-jerk reaction is to say it's too late in Swift 4 for this kind
> of change, but with that out of the way, I'm most concerned about what
> it means to have, say, a UTF-8 index that's not on a UTF-16 boundary.
> let str = "言"
> let oneUnitIn = str.utf8.index(after: str.utf8.startIndex)
> let trailingBytes = str.utf8[oneUnitIn...]
This is not new; it exists today.
> What can I do with 'oneUnitIn'?
All the usual stuff; we're not proposing to change what you can do with
> How do I test to see if it's on a Character boundary or a
> UnicodeScalar boundary?
Replacing the failable APIs listed [above](#motivation) that detect
whether an index represents a valid position in a given view, and
enhancement that explicitly round index positions to nearby boundaries
in a given view, are left to a later proposal. For now, we do not
propose to remove the existing index conversion APIs.
That means you can use oneUnitIn.samePosition(in: str) or
oneUnitIn.samePosition(in: str.unicodeScalars) to find out if it's on ta
character or unicode scalar boundary.
More information about the swift-evolution