Не удается проиндексировать значение типа ‘String’ индексом типа ‘String.Индекс’

#swift

#swift

Вопрос:

Не удается проиндексировать значение типа String с индексом типа String.Index

 if let x = formulars.firstIndex(of: "("){
                formulars[x] = ""
            }
  

Ответ №1:

String является Collection , но не a MutableCollection , что означает, что нижний индекс доступен только для чтения. Также подписку нельзя использовать для удаления элемента коллекции.

Чтобы удалить символ в найденной позиции, используйте

 if let idx = formulars.firstIndex(of: "(") {
    formulars.remove(at: idx)
}
  

И для замены первого вхождения «(» другой строкой используйте

 if let range = formulars.range(of: "(") {
    formulars.replaceSubrange(range, with: "😎")
}
  

Ответ №2:

Просто используйте replacingOccurrences

 formulars = formulars.replacingOccurrences(of: "(", with: "")
  

Комментарии:

1. Просто обратите внимание, что это удаляет все вхождения «(«, а не только первое (которое может быть, а может и не быть нужным).