Swift 生成随机字母数字字符串
在这篇文章中,你将学习在Swift语言中生成随机字母数字字符串的各种方法。
在这里,我们将使用以下3种方法在Swift中生成一个随机的字母数字字符串 −
- 使用RandomNumberGenerator协议
-
使用Random()函数
-
使用高阶函数
使用RandomNumberGenerator协议
Swift 5带有一个随机()函数,它被添加到基础框架中。我们将使用RandomNumberGenerator协议,因为随机()函数是该协议的一部分。
例子
下面的例子演示了如何使用随机()函数在Swift 5中生成一个随机字母数字字符串。
import Foundation
func randomAlphanumericString(_ length: Int) -> String {
let letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
let len = UInt32(letters.count)
var random = SystemRandomNumberGenerator()
var randomString = ""
for _ in 0..<length {
let randomIndex = Int(random.next(upperBound: len))
let randomCharacter = letters[letters.index(letters.startIndex, offsetBy: randomIndex)]
randomString.append(randomCharacter)
}
return randomString
}
// Calling this function to generate a random string of any length, like this:
let randomString = randomAlphanumericString(10)
print("Random alphanumeric string: \(randomString)")
输出
Random alphanumeric string: VXU9XlmO0U
注意 --输出将是随机生成的。
这个函数使用SystemRandomNumberGenerator协议的next(upperBound:)方法,在0和字母串的字符数之间生成一个随机数。
一旦生成了随机字符,它就把它们追加到随机字符串(输出字符串)中。
使用Random()函数
这是在Swift中生成随机字母数字字符串的另一种方法,就是使用String和随机()函数。下面是一个如何使用它来生成特定长度的随机字符串的例子:
例子
import Foundation
func randomAlphanumericString(_ length: Int) -> String {
let letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
var randomString = ""
for _ in 0..<length {
let randomIndex = Int.random(in: 0..<letters.count)
let randomCharacter = letters[letters.index(letters.startIndex, offsetBy: randomIndex)]
randomString.append(randomCharacter)
}
return randomString
}
// Calling this function to generate a random string of any length, like this:
let randomString = randomAlphanumericString(10)
print("Random alphanumeric string: \(randomString)")
输出
Random alphanumeric string: WTU6XlbO1U
在随机函数中,索引可用于从字母串中选择一个随机字符,并将其追加到随机字符串中。
使用高阶函数
在 Swift 5 中生成随机字母数字字符串的另一种方法是使用 String 和 randomElement() 方法,该方法从 Swift 5.1 开始可用。对于下面的Swift版本,这个函数将不起作用。你可以为较早的Swift版本找到一个替代方法。
例子
import Foundation
func randomAlphanumericString(_ length: Int) -> String {
let letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
let randomString = (0..<length).map{ _ in String(letters.randomElement()!) }.reduce("", +)
return randomString
}
// Calling this function to generate a random string of any length, like this:
let randomString = randomAlphanumericString(10)
print("Random alphanumeric string: \(randomString)")
输出
Random alphanumeric string: A5K6XBbP2W
这个函数生成一个所需长度的数字范围,并将其映射到字母串的一个随机元素,然后将所有的元素串联起来,形成一个单一的字符串。randomElement()方法从字母串中选择一个随机字符,reduce方法将所有子串串联成一个字符串。
结论
最后,有几种方法可以在Swift中生成一个随机生成的字母数字字符串。Foundation框架的random()函数用于生成随机数,可以用来生成随机字母数字字符串。Swift 5.1+的随机()函数和随机元素()方法也是生成随机字母数字字符串的可行选择。根据你的需要,这些Swift方法中的任何一个都可以用于生成随机字母数字字符串。