生成随机字符串后出现奇怪的返回值(Swift 3) [英] Strange return value after generating random string (Swift 3)

查看:114
本文介绍了生成随机字符串后出现奇怪的返回值(Swift 3)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个方法,该方法生成并返回一个由字母和数字组成的随机字符串,但是由于某种原因,我只能得到一个带有数字的字符串,并且字符串的长度与我要求的字符串接近是.已返回的字符串的一些示例:"478388299949939566"(插入18作为长度),"3772919388584334"(插入9作为长度),"2293010089409293993945"(插入6作为长度).有人可以看到我在这里想念的东西吗?

I've created a method which generates and returns a random string of both letters and numbers, but for some reason I only get a string with numbers and the length of the string doesn't come close to what I asked it to be. A few examples of strings that have been returned: "478388299949939566" (inserted 18 as the length), "3772919388584334" (inserted 9 as the length), "2293010089409293945" (inserted 6 as the length). Anyone can see what I'm missing here?

func generateRandomStringWithLength(length:Int) -> String {

    let randomString:NSMutableString = NSMutableString(capacity: length)

    let letters:NSMutableString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

    for index in 0...length {

        let randomIndex:Int = Int(arc4random_uniform(UInt32(62)))
        randomString.append("\(letters.character(at: randomIndex))")

    }

    return String(randomString)
}

推荐答案

您的问题在这里:

letters.character(at: randomIndex)

该函数返回给定UTF-16代码单元索引处的字符,而不仅仅是一个字符

it's function returns the character at a given UTF-16 code unit index, not not just a character

这是我的版本,我想它很快了.

Here is my version, I guess its more swiftly.

func generateRandomStringWithLength(length: Int) -> String {

    var randomString = ""
    let letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

    for _ in 1...length {
        let randomIndex  = Int(arc4random_uniform(UInt32(letters.characters.count)))
        let a = letters.index(letters.startIndex, offsetBy: randomIndex)
        randomString +=  String(letters[a])
    }

    return randomString
}

generateRandomStringWithLength(length: 5)

这篇关于生成随机字符串后出现奇怪的返回值(Swift 3)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆