2012-09-24 29 views
5

Tôi cần xác định xem văn bản là địa chỉ email hay số điện thoại di động, đối với địa chỉ email tôi có thể sử dụng một số cụm từ thông dụng, cho số điện thoại di động có thể kiểm tra xem chuỗi có chỉ chữ số (phải không?)iOS: cách kiểm tra xem chuỗi có chỉ chữ số không?

và trình tự giống như:

is (regex_valid_email(text)) 
{ 
    // email 
} 
else if (all_digits(text)) 
{ 
    // mobile number 
} 

nhưng làm cách nào để kiểm tra xem chuỗi có chỉ số trong iOS không?

Cảm ơn

+1

Đối với các bit thứ hai. có thể trùng lặp của [Làm thế nào để kiểm tra xem NSString là số hay không] (http://stackoverflow.com/questions/2020360/how-to-check-if-nsstring-is-numeric-or-not) mà chính nó là một dupe của http://stackoverflow.com/questions/1320295/iphone-how-to-check-that-a-string-is-numeric-only - hãy nhìn vào lần sau trước khi hỏi, chúng tôi không thực sự muốn một triệu bản Mỗi câu hỏi :-) – paxdiablo

+0

Đối với bit đầu tiên, nó cũng được thiết lập rằng regex có khả năng làm email đúng cách khoảng 27 tỷ ký tự :-) Cách tốt nhất để kiểm tra email là gửi một cái gì đó đến nó với một liên kết bắt buộc phải được chọn. Không phải mọi địa chỉ email hợp pháp đều hợp lệ. – paxdiablo

+0

Điều gì sẽ xảy ra nếu số điện thoại có dấu gạch ngang? Hoặc dấu ngoặc đơn? – borrrden

Trả lời

10

Bạn tạo một NSCharacterSet bao gồm các chữ số và có lẽ là dấu gạch ngang và có thể ngoặc (tùy thuộc vào những gì định dạng mà bạn đang nhìn thấy cho các số điện thoại). Sau đó bạn đảo ngược thiết lập đó, vì vậy bạn có một bộ có mọi thứ nhưng những chữ số và mọi thứ, sau đó sử dụng rangeOfCharactersFromSet và nếu bạn nhận được bất cứ điều gì ngoài NSNotFound, thì bạn có một cái gì đó khác với chữ số.

+0

Tôi muốn chỉ ra rằng dựa trên ngôn ngữ, các dấu tách khác với dấu gạch ngang có thể được sử dụng cho số điện thoại. Ví dụ ở Đức, chúng tôi sử dụng dấu gạch chéo và/hoặc dấu cách. – JustSid

+0

Làm cách nào để đảo ngược bộ đó? – hzxu

+0

Bạn sử dụng phương pháp NSCharacterSet đảo ngược Số – rdelmar

5

này nên làm việc:

//This is the input string that is either an email or phone number 
NSString *input = @"18003234322"; 

//This is the string that is going to be compared to the input string 
NSString *testString = [NSString string]; 

NSScanner *scanner = [NSScanner scannerWithString:input]; 

//This is the character set containing all digits. It is used to filter the input string 
NSCharacterSet *skips = [NSCharacterSet characterSetWithCharactersInString:@"1234567890"]; 

//This goes through the input string and puts all the 
//characters that are digits into the new string 
[scanner scanCharactersFromSet:skips intoString:&testString]; 

//If the string containing all the numbers has the same length as the input... 
if([input length] == [testString length]) { 

    //...then the input contains only numbers and is a phone number, not an email 
} 
Các vấn đề liên quan