web-dev-qa-db-ja.com

Swift文字を文字列に変換する方法は?

Stringの最初の文字をStringではなくCharacterとして返したい:

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

ただし、上記ではCharacter is not convertible to String。文字を文字列に変換する正しい方法は何ですか?

この回答 は添え字拡張の作成を提案していますが、Stringの宣言にはすでに添え字メソッドがあります:

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

その答えは時代遅れですか、それともこの2つは異なるものですか?

22
Snowman

文字列補間を使用して、文字を文字列に変換してみませんか?

return "\(firstChar)"
25
Sascha L.

最初のキャラクターだけ?どうですか:

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

文字列を返し(文字列の範囲の添え字で期待するとおり)、少なくとも1つの文字が存在する限り機能します。

これは少し短く、おそらく少し速くなるかもしれませんが、私の心にはそれほどはっきりとは読みません:

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

Swift 2.3/3.0 +以降、次のようなことができます:

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

または、オプションの文字列で問題がない場合:

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

Swift 4の更新。拡張機能の方が良いと思います

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

私は同じ種類の質問についていくつかの調査を行いましたが、この方法で任意の文字列から任意の文字を取得できました。

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

そしてあなたが呼ぶ最初のキャラクターのために

var firstCharAsString = firstLetter("yourString",0)

私はまだプログラミングがあまり得意ではありませんが、これはあなたが望むことをするだろうと思います

編集:

必要に応じて簡素化:

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

それがあなたが必要とするものであることを願っています

3
P1kachu

解析された文字列から文字列に単一の文字を取得しようとしていました。そのため、BをhelpAnswerからCHARACTER形式ではなくString形式にしたかったので、テキストボックスの個々の文字を印刷できました。これはうまくいきます。私はそれの効率について知りません。しかし、それは機能します。 Swift 3.0
みんなの助けてくれてありがとう.....

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