2015-09-11 9 views
12

मैं स्ट्रिंग पर प्रतिशत-एन्कोडिंग जोड़ने के लिए NSCharacterSet.URLQueryAllowedCharacterSet() का उपयोग कर रहा हूं, हालांकि, यह कुछ वर्णों के लिए अंधेरा प्रतीत होता है, यानी "&" या "?"। मौजूदा एक के आधार पर मैं एक कस्टम एनएससीएचएआरएटरसेट कैसे बना सकता हूं?कस्टम NSCharacterSet कैसे बनाएं?

+1

देखो कि तुम संभावना मौजूदा' NSCharacterSet' साथ खेलने के लिए देना चाहिए। – Larme

उत्तर

30

नया वर्ण सेट बनाने का सबसे आम तरीका CharacterSet(charactersIn:) का उपयोग कर रहा है, जो सेट के सभी पात्रों के साथ String दे रहा है।

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

या स्विफ्ट 3 बस में:

एक मौजूदा सेट करने के लिए कुछ पात्रों को जोड़ने का प्रयोग कर प्राप्त किया जा सकता है

var characterSet = CharacterSet.urlQueryAllowed 
characterSet.insert(charactersIn: "?&") 

URL एन्कोडिंग के लिए, यह भी ध्यान रखें Objective-C and Swift URL encoding

+0

पूरी तरह से ठीक काम करता है, धन्यवाद! लेकिन जब मैं "ÄÖÜäöü" जोड़ने की कोशिश करता हूं तो इसका कोई प्रभाव नहीं पड़ता है? – ixany

+0

@ mrtn.lxo आपको अपनी टिप्पणी में अधिक संदर्भ जोड़ना होगा। आप उन्हें कैसे जोड़ रहे हैं? चरित्र सेट के साथ आप बाद में क्या कर रहे हैं? – Sulthan

+0

मैंने बस myCaracterSet.addCharactersInString ("Ä") का उपयोग किया – ixany

2

आप कोशिश कर सकते हैं मेरी विधि:

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~ 

rfc3986: `NSMutableCharacterSet` पर https://tools.ietf.org/html/rfc3986 reference

संबंधित मुद्दे