2016-10-11 13 views
0

文字列を返すAPIがあります。これらの文字列の形式を変更して、すべての単語が最初の文字に変換されるようにしたい "+"最後の言葉は同じである。たとえば、 "米国" -----> "米国アメリカ"または "レアルマドリード" - > "R.マドリード"など。誰でも助けてくれますか?ありがとうございました。文字列形式を省略形に変更するにはどうすればよいですか?

あなたはコンポーネント(separatedBy:String)を使用することができ

答えて

1
  • すべての最初の文字の切り捨てを実行にあなたの文字列を分離し、これらの言葉のために(" "で区切られた)言葉
  • の配列、おそらく(米国のあなたの例に基づいて)前置詞や接続詞をフィルタリング
  • 最後の単語
  • 最後に、互いと最後の(切り捨てられていない)単語との単語の切り捨てリストを結合します。

例えば:

import Foundation 

// help function used to fix cases where the places 
// words are not correctly uppercased/lowercased 
extension String { 
    func withOnlyFirstLetterUppercased() -> String { 
     guard case let chars = self.characters, 
      !chars.isEmpty else { return self } 
     return String(chars.first!).uppercased() + 
      String(chars.dropFirst()).lowercased() 
    } 
} 

func format(placeString: String) -> String { 
    let prepositionsAndConjunctions = ["and", "of"] 
    guard case let wordList = placeString.components(separatedBy: " ") 
     .filter({ !prepositionsAndConjunctions.contains($0.lowercased()) }), 
     wordList.count > 1 else { return placeString } 

    return wordList.dropLast() 
     .reduce("") { $0 + String($1.characters.first ?? Character("")).uppercased() + "." } + 
     " " + wordList.last!.withOnlyFirstLetterUppercased() 
} 

print(format(placeString: "United States of America")) // "U. S. America" 
print(format(placeString: "uniTED states Of aMERIca")) // "U. S. America" 
print(format(placeString: "Real Madrid"))    // "R. Madrid" 
print(format(placeString: "Trinidad and Tobago"))  // "T. Tobago" 
print(format(placeString: "Sweden"))     // "Sweden" 

あなたは、元の場所の文字列を知っている場合は、正しくw.r.t.をフォーマットします上の&小文字の場合は、上記のソリューションをより冗長なものに変更することができます。拡張子Stringのヘルプメソッドを削除してください。

+0

あなたは天才です!ありがとう –

1

それらの間の空白をもとに、各文字列を分離し、文字列の配列:

var str = "United States of America" 

print(str.components(separatedBy: " ")) // Outputs ["United", "States", "of", "America"] 

次にあなたが望むと追加として、各単語を改正、この配列を繰り返し処理結果を変数resultStringに渡します。あなたのケースでは、あらかじめ定義されたグループ( "of"、 "and"など)に属さない単語の最初の文字だけを取り、大文字にします(大文字で呼び出す)それを "。"で連結します。それをあなたの文字列に追加します。配列の最後の要素に到達すると、そのままその単語を追加します。

あなたが開発者のリファレンスで詳細を見つけることができます役立ちますhttps://developer.apple.com/reference/swift/string

希望。すべてのベスト。

+0

ありがとう..あなたもトップの "dfri"レスポンスを見ることができます:) –

+0

@AymenBRomdhane - 問題なく、dfriは私の擬似コードを実際のコードに親切に翻訳しました! – Sparky

関連する問題