Avatar ·

Cómo trabajar correctamente con substrings en Swift? Problemas con String.Index y Range

¡Hola a todos! Empecé a estudiar Swift recientemente y tuve un problema al obtener un substring de una cadena. En otros lenguajes, como Python o JavaScript, esto se hace de manera muy simple: `"Hello"[0:4]` o `"Hello".substring(0, 4)`. Pero en Swift me encontré con cosas extrañas: `String.Index`, `Range`, y métodos como `prefix()`, `suffix()`, `dropFirst()`. Aquí hay un ejemplo que no me funciona: ```swift let text = "Привет, мир!" let substring = text[0...5] // Error: 'subscript(_:)' is unavailable ``` Intenté hacerlo como estaba acostumbrado, pero el compilador se queja. Luego supe que en Swift no se pueden usar números enteros directamente para los índices de las cadenas, porque los caracteres pueden tener diferentes longitudes (por ejemplo, emojis). Pero entonces, ¿cómo obtengo los primeros 5 caracteres o un rango del carácter 3 al 7? Probé este código: ```swift let startIndex = text.index(text.startIndex, offsetBy: 0) let endIndex = text.index(text.startIndex, offsetBy: 5) let range = startIndex..