J'ai le code simple suivant écrit dans Swift 3:
let str = "Hello, playground"
let index = str.index(of: ",")!
let newStr = str.substring(to: index)
À partir de Xcode 9 beta 5, je reçois l'avertissement suivant:
'
substring(to:)
' est obsolète: veuillez utiliser l'String
indice de découpage avec un opérateur 'plage partielle de'.
Comment cet indice de découpage avec plage partielle peut-il être utilisé dans Swift 4?
Réponses:
Vous devez laisser un côté vide , d'où le nom "plage partielle".
Il en va de même pour la plage partielle des opérateurs, laissez simplement l'autre côté vide:
N'oubliez pas que ces opérateurs de plage retournent a
Substring
. Si vous souhaitez le convertir en chaîne, utilisezString
la fonction d'initialisation de:Vous pouvez en savoir plus sur les nouvelles sous-chaînes ici .
la source
str[..<index]
renvoie aSubstring
. Si vous vouleznewStr
être un,String
vous devez écrire:let newStr = "\(str[..<index])"
Substring
est probablement un peu déroutant, car ce que vous essayez d'accomplir vraiment est l'String
initialisation:let newStr = String(str[..<index])
.Cannot subscript a value of type 'String' with an index of type 'PartialRangeUpTo<Int>'
. Quels types de valeurs faut-il y utiliser?str[..<str.index(str.startIndex, offsetBy: 8)]
ou quelque chose comme ça. Gardez à l'esprit qu'ilstr.index
s'agit d'une opération linéaire en fonction deoffsetBy
.str.prefix(8)
Convertir une sous-chaîne (Swift 3) en un découpage de chaîne (Swift 4)
Exemples dans Swift 3, 4:
la source
Swift 5, 4
Usage
Code
la source
Plus court dans Swift 4/5:
la source
La conversion de votre code en Swift 4 peut également se faire de cette façon:
Vous pouvez utiliser le code ci-dessous pour avoir une nouvelle chaîne:
la source
substring (from: index) Converti en [index ...]
Vérifiez l'échantillon
la source
Swift5
(Méthode de sous-chaîne Java):
Usage:
la source
from
parto-1
exemple,"Hello".substring(1,4)
renvoie "ell"). Avec une petite modification (startIndex..<endIndex
), c'est la meilleure solution que j'ai trouvée jusqu'à présent qui fait exactement cela avec seulement quelques lignes de code.Quelques extensions utiles:
la source
Exemple de
uppercasedFirstCharacter
propriété de commodité dans Swift3 et Swift4.La propriété
uppercasedFirstCharacterNew
montre comment utiliser l'indice de découpage de chaîne dans Swift4.la source
Vous pouvez créer votre méthode de sous-chaîne personnalisée en utilisant l'extension de la classe String comme ci-dessous:
la source
Création d'une sous-chaîne (préfixe et suffixe) à partir de String à l'aide de Swift 4:
Production
Si vous souhaitez générer une sous-chaîne entre 2 indices, utilisez:
la source
J'ai écrit une extension de chaîne pour remplacer 'String: subString:'
PS: les optionnels sont obligés de déballer. Veuillez ajouter un contrôle de sécurité de type chaque fois que nécessaire.
la source
Lors de la programmation, j'ai souvent des chaînes avec simplement A-Za-z et 0-9. Pas besoin d'actions d'index difficiles. Cette extension est basée sur les anciennes fonctions simples gauche / milieu / droite.
la source
avec cette méthode, vous pouvez obtenir une plage spécifique de chaîne.vous devez passer l'index de démarrage et après ce nombre total de caractères que vous souhaitez.
la source
Ceci est ma solution, pas d'avertissement, pas d'erreurs, mais parfait
la source
encodedOffset
est considérée comme nuisible et sera déconseillée .J'espère que cela vous aidera un peu plus: -
Si vous voulez une sous-chaîne après un index particulier.
Si vous voulez une sous-chaîne après avoir supprimé une chaîne à la fin.
vous pouvez également créer des index avec le code suivant: -
la source
J'espère que ce serait utile.
la source
Vous pouvez essayer de cette façon et vous obtiendrez de bons résultats.
la source