it-swarm.com.de

Wie konvertiere ich Swift Character in String?

Ich möchte den ersten Buchstaben einer String als String statt als Character zurückgeben:

func firstLetter() -> String {
    return self.title[0]
}

Mit dem oben genannten bekomme ich jedoch Character is not convertible to String. Was ist der richtige Weg, um ein Zeichen in einen String zu konvertieren?

Diese Antwort schlägt vor, eine Indexerweiterung zu erstellen, die Deklaration für String enthält jedoch bereits eine Indexmethode:

subscript (i: String.Index) -> Character { get }

Ist diese Antwort veraltet oder sind das zwei verschiedene Dinge?

22
Snowman

Warum konvertieren Sie das Zeichen nicht in eine Zeichenfolge?

return "\(firstChar)"
25
Sascha L.

Nur der erste Charakter? Wie wäre es mit:

var str = "This is a test"
var result = str[str.startIndex..<str.startIndex.successor()] // "T": String

Gibt einen String zurück (wie Sie es von einem String-Index für einen String erwarten würden) und funktioniert, solange es mindestens ein Zeichen gibt.

Dies ist ein wenig kürzer und könnte einen Bruchteil schneller sein, aber meiner Meinung nach liest es nicht so klar:

var result = str[str.startIndex...str.startIndex]
9
Matt Gibson

Ab Swift 2.3/3.0 + können Sie so etwas tun:

func firstLetter() -> String {
    guard let firstChar = self.title.characters.first else {
        return ""  // If title is nil return empty string
    }
    return String(firstChar)
}

Oder wenn Sie mit der optionalen Zeichenfolge OK sind:

func firstLetter() -> String? {
    guard let firstChar = self.title.characters.first else {
       return nil
    }
    return String(firstChar)
}

Update für Swift 4 , denke auch, dass eine Erweiterung besser ist

extension String{
func firstLetter() -> String {
    guard let firstChar = self.first else {
        return ""
    }
    return String(firstChar)
}
4
nCod3d

Ich habe einige Nachforschungen für dieselbe Art von Frage durchgeführt, und ich fand diesen Weg, um jedes Zeichen aus einer beliebigen Zeichenfolge zu erhalten:

func charAsString(str:String, index:Int) -> String {
    return String(Array(str)[index])
}

und für das erste Zeichen, das Sie anrufen

var firstCharAsString = firstLetter("yourString",0)

Ich bin noch nicht sehr gut im Programmieren, aber ich denke, dass dies tun wird, was Sie wollen

BEARBEITEN:

Vereinfacht für Ihre Bedürfnisse:

func firstChar(str:String) -> String {
    return String(Array(str)[0])
}

Ich hoffe, dass es das ist, was du brauchst

3
P1kachu

Ich habe versucht, einzelne Zeichen aus einem analysierten String in einen String zu konvertieren. Daher wollte ich B aus helpAnswer im String-Format und nicht im Zeichenformat, sodass ich die einzelnen Zeichen in einem Textfeld ausdrucken konnte . Ich weiß nicht, wie effizient es ist ... aber es funktioniert. Swift 3,0
Danke für die Hilfe von allen .....

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)])
0
ChopinBrain
let str = "My String"
let firstChar = String(str.characters.first!)
0