【Swift】Unicodeエスケープ文字/パーセント文字を文字列に変換する方法!removingPercentEncoding

【Swift】Unicodeエスケープ文字/パーセント文字を文字列に変換する方法!removingPercentEncoding

この記事からわかること

  • SwiftUnicodeエスケープ文字文字列変換する方法
  • removingPercentEncodingプロパティ使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Unicodeエスケープ文字をString型に変換する方法

SwiftでUnicodeエスケープ文字を文字列(String型)に変換するにはremovingPercentEncodingプロパティを使用します。これはAPIなどの結果でUnicodeエスケープ文字を取得した想定です。


// let escapedString = "\u3053\u3093\u306b\u3061\u306f" // ⇦この形式ではSwiftではエラーになる
// こういうデータをAPIの結果などで受け取ったとして
if let unescapedString = escapedString.removingPercentEncoding {
    print(unescapedString) // こんにちは
}

Swift自体でUnicodeエスケープ文字自体を記述するには以下のように\u{}形式で囲う必要があります。

let escapedString = "\u{3053}\u{3093}\u{306b}\u{3061}\u{306f}"

またUnicodeエスケープ文字が実際に何を表しているかを確認するには以下の「Unicodeエスケープシーケンス変換ツール」を使うと相互に変換できて便利です。

Unicodeエスケープシーケンス変換ツール

パーセント文字をString型に変換する方法

URLなどに日本語が含まれる際にはパーセント文字になってしまいます。これもremovingPercentEncodingプロパティで文字列(String型)に変換することが可能です。

let escapedString = "%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A"
if let unescapedString = escapedString.removingPercentEncoding {
    print(unescapedString) // あいうえお
}

removingPercentEncodingプロパティ

公式リファレンス:removingPercentEncodingプロパティ

var removingPercentEncoding: String? { get }

removingPercentEncodingパーセントやUnicodeなどでエンコードされたシーケンスを一致するUTF-8文字に置き換え新しい文字列を返すプロパティです。

逆にエンコードしたい場合はaddingPercentEncodingメソッドを使用することでパーセントエンコードされた文字に置き換えることが可能です。

公式リファレンス:addingPercentEncoding

func addingPercentEncoding(withAllowedCharacters allowedCharacters: CharacterSet) -> String?

例えば以下のようにURLをチェックする際などに利用できます。

func validationUrl (_ urlStr: String) -> Bool {
    guard let encurl = urlStr.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed) else {
        return false
    }
    if let url = NSURL(string: encurl) {
        return UIApplication.shared.canOpenURL(url as URL)
    }
    return false
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index