2015-09-11 13 views

cevap

30

Yeni bir karakter kümesi oluşturmanın en tipik yolu, String değerini kümenin tüm karakterleriyle birlikte vererek CharacterSet(charactersIn:) kullanıyor.

URL kodlaması için
var characterSet = CharacterSet.urlQueryAllowed 
characterSet.insert(charactersIn: "?&") 

, ayrıca Deneyebilirsin Objective-C and Swift URL encoding

+0

Mükemmel çalışıyor, teşekkürler! Ama "ÄÖÜäöü" yi eklemeye çalıştığımda bunun bir etkisi yok mu? – ixany

+0

@ mrtn.lxo Yorumunuza daha fazla bağlam eklemeniz gerekecek. Onları nasıl ekliyorsun? Daha sonra karakter seti ile ne yapıyorsun? – Sulthan

+0

Sadece myCaracterSet.addCharactersInString ("Ä") kullanıyorum – ixany

2

not:

let characterSet = NSMutableCharacterSet() //create an empty mutable set 
characterSet.formUnionWithCharacterSet(NSCharacterSet.URLQueryAllowedCharacterSet()) 
characterSet.addCharactersInString("?&") 

veya basitçe Swift 3'te: Varolan kümeye bazı karakterler ekleme

kullanılarak elde edilebilir benim yöntemi:

let password = "[email protected]#$%^&*()-_abcdABCD1234`~" 

// Swift 2.3 
extension NSCharacterSet { 
    static var rfc3986Unreserved: NSCharacterSet { 
     let mutable = NSMutableCharacterSet() 
     mutable.formUnionWithCharacterSet(.alphanumericCharacterSet()) 
     mutable.addCharactersInString("-_.~") 
     return mutable 
    } 
} 

let encoding = password.stringByAddingPercentEncodingWithAllowedCharacters(.rfc3986Unreserved) 

// Swift 3 
extension CharacterSet { 
    static var rfc3986Unreserved: CharacterSet { 
     return CharacterSet(charactersIn: "-_.~").union(.alphanumerics) 
    } 
} 

let encoding = password.addingPercentEncoding(withAllowedCharacters: .rfc3986Unreserved) 

Print: 
original -> [email protected]#$%^&*()-_abcdABCD1234`~ 
encoding -> %3F%2B%3D%21%40%23%24%25%5E%26%2A%28%29-_abcdABCD1234%60~ 

RFC 3986: Size `NSCharacterSet` mevcut oynamak imkanı vermelidir NSMutableCharacterSet`` de https://tools.ietf.org/html/rfc3986 reference

İlgili konular