Какой тип нормализации используется при сравнении строк Swift?
В другом месте я видел, что в сравнениях Swift используется нормализация NFD.
Однако, бегая на детской площадке iSwift, я обнаружил, что
print("\u{0071}\u{0307}\u{0323}" == "\u{0071}\u{0323}\u{0307}");
дает false
несмотря на то, что это пример прямо из стандарта "канонической эквивалентности", которому, как утверждает документация Swift, следует следовать.
Итак, какую канонизацию выполняет Swift, и это ошибка?
1 ответ
Решение
Похоже, что это была ошибка в Swift, которая с тех пор была исправлена. С Swift 3 и Xcode 8.0,
print("\u{0071}\u{0307}\u{0323}" == "\u{0071}\u{0323}\u{0307}")
сейчас печатает true
,