Arrays 如何获取和设置字符串';Swift中特定索引处的s字符

Arrays 如何获取和设置字符串';Swift中特定索引处的s字符,arrays,swift,string,character,Arrays,Swift,String,Character,我想用像这样的东西 数组字符串[firstString][index]=“1” 但结果是: 无法通过下标进行分配:下标是get only 并解释为什么会出现以下代码 变量arrayString:[String]=struct.strings 不允许先比较[索引]=“0” 因此,我需要使用vararrayString=struct.strings,这取决于您需要执行此操作的次数,最好是从字符串创建一个字符数组,并索引到该字符串中 您可以只为您关心的字符串执行以下操作: let strings =

我想用像这样的东西 数组字符串[firstString][index]=“1”

但结果是: 无法通过下标进行分配:下标是get only

并解释为什么会出现以下代码 变量arrayString:[String]=struct.strings

不允许先比较[索引]=“0”
因此,我需要使用vararrayString=struct.strings

,这取决于您需要执行此操作的次数,最好是从字符串创建一个字符数组,并索引到该字符串中

您可以只为您关心的字符串执行以下操作:

let strings = ["abcdefg", "123", "qwerty"]
let characters = Array(strings[1].characters) // => ["1", "2", "3"]
print(characters[0]) // => "1"
或者,如果要对所有字符串进行大量访问,则可以预先将所有字符串转换为
[字符]
,如下所示:

let strings = ["abcdefg", "123", "qwerty"]
let stringCharacters = strings.map{ Array(string.characters) }
/* [
       ["a", "b", "c", "d", "e", "f", "g"],
       ["1", "2", "3"],
       ["q", "w", "e", "r", "t", "y"]
   ] */
print(characters[1][0]) // => "1"
如果要进行更改,只需将字符数组转换回字符串,并将其分配到任何需要的位置:

var strings = ["abcdefg", "123", "qwerty"]
var characters = Array(strings[1].characters) // => ["1", "2", "3"]
characters[0] = "0"
strings[1] = String(characters)
print(strings) // => ["abcdefg", "023", "qwerty"]
此外,我还使用了一个方便的扩展来改变字符串中的许多字符:

extension String {
    mutating func modifyCharacters(_ closure: (inout [Character]) -> Void) {
        var characterArray = Array(self.characters)
        closure(&characterArray)
        self = String(characterArray)
    }
}


var string = "abcdef"

string.modifyCharacters {
    $0[0] = "1"
    $0[1] = "2"
    $0[2] = "3"
}

print(string)

看一看.Thks,我已经在编代码了,担心我不能用另一种方法来做。只是不太明白为什么我不能像其他语言一样访问和更改特定索引…@layntavares,因为与大多数语言不同,Swift的
String
严格地支持Unicode。阅读此文以了解更多信息:@layntavares以下是Java中默认使用的不正确unicode支持可能导致的错误类型示例:@layntavares,以下是Swift中的相同示例,该示例正确处理了错误: