Swift 任何人都可以解释字符串。请将(quot:options:range:locale:)与示例进行比较?

Swift 任何人都可以解释字符串。请将(quot:options:range:locale:)与示例进行比较?,swift,swift3,Swift,Swift3,有人能解释一下在现实生活的例子中下面的字符串函数的用法吗 func compare\uuuastring:String,选项掩码:String.CompareOptions=默认值,范围:range?=默认值,区域设置:区域设置?=默认->比较结果 非常简短的版本:这在Swift中不是一个高度使用的方法。通常有更好的工具。它主要用于ObjC import Foundation let alice = "alice" let bob = "bob" let upBob = "BOB" let b

有人能解释一下在现实生活的例子中下面的字符串函数的用法吗

func compare\uuuastring:String,选项掩码:String.CompareOptions=默认值,范围:range?=默认值,区域设置:区域设置?=默认->比较结果


非常简短的版本:这在Swift中不是一个高度使用的方法。通常有更好的工具。它主要用于ObjC

import Foundation

let alice = "alice"
let bob = "bob"
let upBob = "BOB"
let bobby = "bobby"

// all are true
bob.compare(bob) == .orderedSame
bob.compare(alice) == .orderedDescending
bob.compare(upBob, options: .caseInsensitive) == .orderedSame

// This is a little weird in Swift because of how strings work. It's easier to use in ObjC
let rangeOfBob = bobby.range(of: "bob")!
bobby.compare(bob, range: rangeOfBob) == .orderedSame

bob.compare(umlaut, options: .diacriticInsensitive) == .orderedSame
关键的一课是compare告诉您排序顺序。如果两个字符串相同,则得到.orderedSame。如果目标订单在参数之前,那么您将获得.orderedAscending。否则,.orderedDescending


对于经常使用==和Yes的简单用法来说,compare不是很快,但在Swift中使用起来比较困难。人们经常会因为必须与.orderedSame进行比较而感到困惑。它还允许您在如何将两个字符串视为相等方面提供更多选项。一个人为的例子是resume!=Swift中的résumé,但如果使用选项调用函数:[.diacriticInsensitive],则它们是相等的。locale参数用于根据本地字母表对字符串进行排序。我不懂足够多的语言,所以想不出一个例子来说明这一点。因为比较更强大,见最后一段。但在许多情况下,这并不是最快捷的解决方案。