任何人都可以解释字符串.compare(_:选项:范围:locale:)举个例子



谁能解释一下下面String函数在现实生活中的用途。

func compare(_ aString: String, options mask: String.CompareOptions = default, range: Range<String.Index>? = default, locale: Locale? = default) -> ComparisonResult

https://developer.apple.com/reference/swift/string/1412785-compare

非常简短的版本:这在 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 .

对于简单的用法来说,compare不是很"Swifty"(你经常使用==<代替(。但是,如果您需要诸如变音符号不敏感之类的东西,它非常强大。对于不区分大小写,您只需在 Swift 中使用 lowercased(with:)

最新更新