【Swift】Unicodeエスケープ文字/パーセント文字を文字列に変換する方法!removingPercentEncoding
この記事からわかること
- SwiftでUnicodeエスケープ文字を文字列に変換する方法
- 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エスケープシーケンス変換ツール」を使うと相互に変換できて便利です。
パーセント文字を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
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。