15

これは、ios アプリを作成するための私の最初の試みです。

ピープル ピッカーを使用してユーザーに電話番号を尋ねていますが、以下のコードで取得すると、NSString *phone(0) 111192222-2222 のように表示されます。私はブラジル出身で、ここでは携帯電話番号の正しいマスクは (01111) 92222-2222 です (9 はオプションであり、一部の番号にはそうでない番号もあります)。このマスクを修正するには?それとも完全に削除しますか?

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
    ABMultiValueRef multiValue = ABRecordCopyValue(person, property);
    CFIndex index = ABMultiValueGetIndexForIdentifier(multiValue, identifier);
    NSString *phone = (__bridge NSString *)ABMultiValueCopyValueAtIndex(multiValue, index);
    return NO;
}
4

5 に答える 5

42

この回答を参照してください: https://stackoverflow.com/a/6323208/60488

基本的:

NSString *cleanedString = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789-+()"] invertedSet]] componentsJoinedByString:@""];

あなたのケースでは、文字セットから文字「-」、「(」、および「)」を削除したい場合があります。

于 2013-02-28T03:47:45.970 に答える
2

これを解決する方法はいくつかあると思います。

  1. NSRegularExpressionを使用して、数字以外のものを削除します。電話番号を検証する方法については、こちらまたはこちらをご覧ください。
  2. 独自のスキャナーを作成して、不要な文字を削除します。空白を削除するか、数字以外のすべてを削除します
  3. UITextFieldDelegateを使用してメソッドを記述し textField:shouldChangeCharactersInRange:replacementString:、置換文字列が0〜9の範囲にあるかどうかを確認します。

助けてくれることを願っています。

于 2013-02-28T03:13:59.837 に答える
2

NSString および NSMutableString のいくつかのメソッドを次のように使用できます。

NSString *phone=@"(0) 111192222-2222";
//I'm from Brazil and here the correct mask for mobile phone numbers is (01111) 92222-2222
NSMutableString *editPhone=[NSMutableString stringWithString:[phone stringByReplacingOccurrencesOfString:@")" withString:@""]];
editPhone=[NSMutableString stringWithString:[editPhone stringByReplacingOccurrencesOfString:@" " withString:@""]];

[editPhone insertString:@") " atIndex:6];


NSLog(@"%@",editPhone);//(01111) 92222-2222
于 2013-02-28T02:44:47.193 に答える
1

自分を殺してカスタム キーボードを作成する代わりに、正規表現を使用して電話番号を検証します。この機能は、iOS の更新によって変更できます。したがって、すべての文字を許可し、コード内で検証します。

于 2013-02-28T02:15:51.333 に答える
0

SWIFT 5.0ソリューション

let purePhoneNumber = phoneNumber.replacingOccurrences(of: "[^0-9]", 
                                                       with: "", 
                                                       options: .regularExpression)

文字列に符号を残したい場合+は、 regexp を使用できます[^0-9+]

于 2019-11-27T11:56:34.333 に答える