2013-11-02 10 views
10

मेरे ऐप में मैं संपर्क संख्या की सूची पुनर्प्राप्त करने का प्रयास कर रहा हूं और उन पर संचालन करने का प्रयास कर रहा हूं। मुझे एहसास हुआ कि जब भी मैंने नए संपर्क जोड़े हैं (आईओएस 7 को अपडेट करने के बाद) नए संपर्क स्वरूपण बदल गए हैं, क्योंकि नए जोड़े गए नंबरों में स्पैक्सिंग हैं।आईओएस 7 संपर्क संख्या रिक्त स्थान रिक्त स्थान

सामान्य प्रतिस्थापन विधियों का उपयोग रिक्त स्थान को नहीं हटाता है।

क्या ये वास्तव में रिक्त स्थान हैं या ये क्या हैं? मेरा उद्देश्य 'अंतरिक्ष' मुक्त संख्या वापस पाने के लिए है।

NSString *cleaned = [[phoneNr componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] componentsJoinedByString:@""]; 

इस स्थान (of which there are many) के किसी भी प्रकार के लिए काम करना चाहिए:

उदाहरण के लिए, यदि संख्या 1 818 323 323 323 है, मैं पाने के लिए 1818323323323

+1

"सामान्य प्रतिस्थापन विधियां" क्या हैं? – mrueg

+0

@mrueg शायद मानक एनएसएसटींग स्ट्रिंग ByReplacing * विधियों –

उत्तर

8

इस प्रयास करें चाहते हैं। यह कुछ हद तक अक्षम हो सकता है, लेकिन फोन नंबरों के लिए, यह ठीक होना चाहिए।

+0

मैं लगभग निश्चित था कि यह दृष्टिकोण @ "" @ "" (alt-space) और @ "\ u00a0" को बदलने की कोशिश करने के बाद काम करेगा, लेकिन यह दृष्टिकोण मेरे लिए काम नहीं करता –

+0

पता पुस्तिका फोन नंबर –

+0

के संबंध में \ U00a0 मुद्दे के साथ मेरे लिए काम किया, यह मेरी Localizable.strings फ़ाइल में काम करने के लिए, मुझे सभी कैप्स का उपयोग करना पड़ा: '\ U00A0' –

7

कुछ आईओएस 7 फोन नंबर गैर-ब्रेकिंग स्पेस के साथ एन्कोड किए गए हैं। इस प्रयास करें:

 NSString* stringFormatted = [phoneNumber stringByReplacingOccurrencesOfString:@"\u00a0" withString:@""]; 
+0

मेरे लिए काम नहीं किया: [ –

5

के बाद बहुत ज्यादा स्ट्रिंग सफाई तरह से मैं अंत में से पता पुस्तिका सीधे CFStringRef मुद्रण के बाद एक जवाब मिल गया। यहाँ पर्दे के पीछे क्या हो रहा है ...

  1. iOS7 और एप्पल स्टोर में कोई संपर्क जोड़ें है इस: (555) .555-5555
  2. मेरा ऐप प्रतियां एक (जहां वास्तव में U00A0 या & nbsp है।) पता पुस्तिका से एक CFStringRef में संपर्क की जानकारी (जब। शो NSLogged)
  3. CFStringRef NSString में डाला जाता है

\ U00A0 मैं इस धागे से 3 जवाब करने की कोशिश की दूर करने के लिए (NSLog अब 555 \ U00a0555-5555 दिखाता है) और [NSCharacterSet characterSetWithRange: (160,1)] जो काम नहीं किया। अंततः कोड की यह पंक्ति थी:

phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@"." withString:@""]; 

// जहां @ "।" विकल्प + स्पेसबार

+0

इस तरह से मेरे लिए काम नहीं करेगा – beyerss

13

मैंने इसे 'रिक्त स्थान' से छुटकारा पाने के रूप में देखा लेकिन केवल दशमलव वर्णों के साथ छोड़ा गया था। इस कोड को किया था कि मेरे लिए:

phoneNumberString = [[phoneNumberString componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""]; 

यह सब कुछ कि एक नंबर 0-9 नहीं है बाहर ले जाता है।

+0

शानदार यह मेरे लिए काम करता है, हालांकि यह संख्या से + को हटा देगा यदि आप प्लस रखने में रुचि रखते हैं तो आपको इसमें कुछ तर्क लागू करने की आवश्यकता होगी। –

+0

अद्भुत! इसने एकदम जादू की तरह काम किया। बहुत बहुत धन्यवाद: डी –

2

यदि कोई व्यक्ति संख्या की शुरुआत में + को बनाए रखना चाहता है तो मैंने पोस्टर के उत्तर में एक छोटा समायोजन किया है।

यदि आप रिक्त स्थान को हटाने के बाद प्लस रखना चाहते हैं तो मैंने यह छोटा समायोजन किया है।

Boolean shouldAddPlus = NO; 

if([[phoneNumber substringToIndex:1] isEqualToString:@"+"]) 
    { 
     shouldAddPlus = YES; 
    } 

phoneNumber = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""]; 

if(shouldAddPlus) 
    phoneNumber = [base stringByAppendingString:phoneNumber]; 
+0

यह काम करता है, धन्यवाद। – Androidbirt

3

साफ समाधान मेरी क्षुधा में उपयोग किया जा रहा है:

NSMutableCharacterSet *phoneNubmerCharacterSet = [NSMutableCharacterSet characterSetWithCharactersInString:@"+"]; 
[phoneNubmerCharacterSet formUnionWithCharacterSet:[NSCharacterSet decimalDigitCharacterSet]]; 
NSString* phoneString = [[phoneString componentsSeparatedByCharactersInSet:[phoneNubmerCharacterSet invertedSet]] componentsJoinedByString:@""]; 

नहीं "अगर" तर्क, संख्या में + रहता है, यादृच्छिक अवांछित पात्रों

+1

यह पूरी तरह से काम करता है क्योंकि कई अनचाहे चरित्र जैसे \ u0000 आदि हो सकते हैं। – iMemon

1

सभी तरह निकाल देता है सही समाधान किसी स्थान पर

NSString *clean = [dirty stringByReplacingOccurrencesOfString:@"\u00a0" withString:@" "]; 

तो आप स्थान और उपयोगकर्ता को खो नहीं देते हैं देखता है कि अन्य ऐप्स में क्या देखता है।

2

एक और (बहुत लचीला) विकल्प नियमित अभिव्यक्ति का उपयोग करना है। यह आपको + या किसी अन्य पात्र को बनाए रखने की अनुमति देता है जिसे आप रहना चाहते हैं।

let numberFromAddressBook = "+1 818 323 323 323" 

let cleanNumber = numberFromAddressBook.stringByReplacingOccurrencesOfString("[^0-9+]", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range:nil) 

"+1818323323323" 
संबंधित मुद्दे