2014-01-15 101 views
2

我試圖從我的應用程序進行調用,但似乎我不能,因爲數字是在印度格式(例如:966595848882),並使其工作,我必須將此字符串轉換爲阿拉伯文格式(例如: 966595848882)如何將印度數字轉換成阿拉伯數字?

我的代碼:

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

NSString *phoneNumber = [@"telprompt://" stringByAppendingString:cleanedString]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]]; 

回答

6

使用NSNumberFormatter用相應的語言環境。例如:

NSString *indianNumberString = @"٩٦٦٥٩٥٨٤٨٨٨٢"; 
NSNumberFormatter *nf1 = [[NSNumberFormatter alloc] init]; 
NSLocale *locale = [NSLocale localeWithLocaleIdentifier:@"hi_IN"]; 
[nf1 setLocale:locale]; 

NSNumber *newNum = [nf1 numberFromString:indianNumberString]; 
NSLog(@"new: %@", newNum); 

這會打印「966595848882」。

我不是100%確定上面的區域標識符 - hi_IN應該是「印度印度」。如果這不正確,請使用[NSLocale availableLocaleIdentifiers]獲取所有已知區域設置標識符的列表,並找到更合適的列表。

更新:爲了墊了這一點,以九個位數(或包含很多你想要的),使用標準NSString格式轉換回NSString

NSString *paddedString = [NSString stringWithFormat:@"%09ld", [newNum integerValue]]; 

格式%09ld將零墊出到九位數字。

也可以使用相同的數字格式化程序將上述數字轉換回字符串,同時需要9位數字。這也至少給出9位數字,必要時填零:

[nf1 setMinimumIntegerDigits:9]; 
NSString *reverseConvert = [nf1 stringFromNumber:newNum]; 
+0

它的工作,謝謝。但是從開頭刪除零是否有我能做的事情?(請**注意**:有時數字以零開始,有時以九或八開頭,EX:920000001) – AsimNet

+0

請參閱我的零填充更新。 –

+0

我不會說這種語言,但我覺得這個方法很有趣。 +1。 – Unheilig