Je souhaite renvoyer la première lettre d'une String
sous la forme String
au lieu de Character
:
func firstLetter() -> String {
return self.title[0]
}
Cependant, avec ce qui précède, je reçois Character is not convertible to String
. Quelle est la bonne façon de convertir un personnage en chaîne?
Cette réponse suggère de créer une extension en indice, mais la déclaration de String
a déjà une méthode en indice:
subscript (i: String.Index) -> Character { get }
Cette réponse est-elle dépassée ou ces deux choses sont-elles différentes?
Pourquoi n'utilisez-vous pas l'interpolation de chaînes pour convertir le personnage en chaîne?
return "\(firstChar)"
Juste le premier personnage? Que diriez-vous:
var str = "This is a test"
var result = str[str.startIndex..<str.startIndex.successor()] // "T": String
Retourne une chaîne (comme on pouvait s'y attendre avec un indice de plage d'une chaîne) et fonctionne tant qu'il y a au moins un caractère.
Ceci est un peu plus court, et probablement peut-être un peu plus rapide, mais à mon avis, je ne lis pas aussi clairement:
var result = str[str.startIndex...str.startIndex]
A partir de Swift 2.3/3.0 + vous pouvez faire quelque chose comme ceci:
func firstLetter() -> String {
guard let firstChar = self.title.characters.first else {
return "" // If title is nil return empty string
}
return String(firstChar)
}
Ou si vous êtes d'accord avec la chaîne facultative:
func firstLetter() -> String? {
guard let firstChar = self.title.characters.first else {
return nil
}
return String(firstChar)
}
Mise à jour pour Swift 4 , pense également qu'une extension est meilleure
extension String{
func firstLetter() -> String {
guard let firstChar = self.first else {
return ""
}
return String(firstChar)
}
J'ai fait quelques recherches pour le même type de question, et j'ai trouvé cette méthode pour obtenir n'importe quel caractère d'une chaîne:
func charAsString(str:String, index:Int) -> String {
return String(Array(str)[index])
}
et pour le premier caractère que vous appelez
var firstCharAsString = firstLetter("yourString",0)
Je ne suis pas encore très bon en programmation mais je pense que cela fera ce que vous voulez
MODIFIER:
Simplifié pour votre besoin:
func firstChar(str:String) -> String {
return String(Array(str)[0])
}
J'espère que c'est ce dont tu as besoin
J'essayais d'obtenir des caractères uniques d'une chaîne analysée dans une chaîne . Je voulais donc B helpEnswer au format String, pas au format CHARACTER, pour pouvoir imprimer les caractères individuels dans une zone de texte . Je ne sais pas sur l'efficacité de celui-ci . Mais cela fonctionne. Swift 3.0
Merci pour l'aide de tous .....
var helpAnswer = "ABC"
var String1 = ""
var String2 = ""
var String3 = ""
String1 = (String(helpAnswer[helpAnswer.index(helpAnswer.startIndex, offsetBy: 0)]))
String2 = (String(helpAnswer[helpAnswer.index(helpAnswer.startIndex, offsetBy: 1)]))
String3 = (String(helpAnswer[helpAnswer.index(helpAnswer.startIndex, offsetBy: 1)])
let str = "My String"
let firstChar = String(str.characters.first!)