2016-03-30 11 views
0

iOSアプリの電話番号から空白を削除することはできません。iOSの電話番号から空白を削除する方法

ここは私のコードです。

 ABMultiValueRef multiPhones = ABRecordCopyValue(person, kABPersonPhoneProperty); 
     for (CFIndex iPhone = 0; iPhone < ABMultiValueGetCount(multiPhones); iPhone++) 
     { 
      CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(multiPhones, iPhone); 
      NSString *phoneNumber = (__bridge NSString *) phoneNumberRef; 
      if (phoneNumber == nil) { 
       phoneNumber = @""; 
      } 
      if (phoneNumber.length == 0) continue; 

      // phone number = (217) 934-3234 
      phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; 
      phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; 
      phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@"-" withString:@""]; 
      phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@" " withString:@""]; 

      // phone number = 217 9343234 
      [phoneNumbers addObject:phoneNumber]; 
     } 

空白がないと予想します。しかし、それは電話番号から削除されません。 どうすれば修正できますか?私を助けてください。ありがとう

+0

ねえ、トロイの木馬。私はどんなブログでもこの答えを得ることができませんでした。なぜあなたは重複としてマークしましたか? –

+0

あなたが受け入れた回答がまったく同じ解決策を提供するためです!同じ質問でサイトを埋めるのを避けるために、投稿する前に検索してください。 – trojanfoe

答えて

0

あなたは現在NSCharacterSetでやっているよりも簡単に何かをすることができます。方法は次のとおりです。

NSCharacterSetは、文字の集合を定義します。 decimalDigitsCharacterSetalphaNumericCharacterSetのような標準的なものがいくつかあります。

invertedSetという便利な方法もあります。これは現在の文字にではないの文字セットを返します。今、ちょっとだけ情報が必要です。

NSStringにはcomponentsSeparatedByCharactersInSet:というメソッドがあり、文字列の一部のNSArrayを返すことができます。これは、指定したcharacterSetの文字の周りに分割されています。

NSArrayは、配列の要素を元の文字列に変換するために使用できる補完的な関数componentsJoinedWithString:を持っています。これがどこにあるのか見てみましょうか? 、今

NSCharacterSet *digits = [NSCharacterSet decimalDigitCharacterSet];

を他のすべてを取得する:

まず、私たちは私たちの最終的な出力に含める文字セットを定義します。

NSCharacterSet *illegalCharacters = [digits invertedSet]

私たちは私たちが望む文字セットを持っていたら、私たちは、文字列を分割し、それを再構築することができます:あなたは正しい出力を与える必要があります

NSArray *components = [phoneNumber componentsSeperatedByCharactersInSet:illegalCharacters]; 

NSString *output = [components componentsJoinedByString:@""]; 

を。 4行、および設定が完了し:

NSCharacterSet *digits = [NSCharacterSet decimalDigitCharacterSet]; 
NSCharacterSet *illegalCharacters = [digits invertedSet]; 
NSArray *components = [phoneNumber componentsSeparatedByCharactersInSet:illegalCharacters]; 

NSString *output = [components componentsJoinedByString:@""]; 

あなたはwhitespaceCharacterSetは、文字列のオフホワイトスペースをトリミングする似た何かを行うことができます。

NSHipsterはこれについてもa great articleです。

EDIT:

あなたは、このような+接頭語や括弧などの記号を含めるしたい場合は、characterSetWithCharactersInString:でカスタム文字セットを作成することができます。小数点や作成したカスタムのような2つの文字セットがある場合は、NSMutableCharacterSetを使用して、他の文字を含める必要がある文字セットを変更できます。

+0

おっと、そこに行く。 – Moshe

+0

これは機能しません。 この行でエラーが発生しました。 NSArray * components = [電話番号componentsSeparatedByString:illegalCharacters]; –

+0

何が問題なのですか?それはコンパイルされますか?それは間違った出力を与えるか? – Moshe

関連する問題