Sob*_*han 5 objective-c arabic persian
我有一个英文字符串,可能有也可能没有数字.但我希望这些数字作为波斯数字在屏幕上打印出来.
例如,如果 NSString *foo = @"a string with numbers 1 2 3;"
那么输出应该是 a string with numbers ???
我现在使用的代码是:
-(NSString *)convertEnNumberToFarsi:(NSString *) number{
NSString *text;
NSDecimalNumber *someNumber = [NSDecimalNumber decimalNumberWithString:number];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
NSLocale *gbLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fa"];
[formatter setLocale:gbLocale];
text = [formatter stringFromNumber:someNumber];
return text;
}
Run Code Online (Sandbox Code Playgroud)
此方法仅转换仅包含数字的字符串,但如上所述,我想转换任何可能包含或不包含数字的字符串.
我怎样才能实现这一目标?
简单的方法:
NSDictionary *numbersDictionary = @{@"1" : @"?", @"2" : @"?", @"3" : @"?", @"4" : @"?", @"5" : @"?", @"6" : @"?", @"7" : @"?", @"8" : @"?", @"9" : @"?"};
for (NSString *key in numbersDictionary) {
str = [str stringByReplacingOccurrencesOfString:key withString:numbersDictionary[key]];
}
Run Code Online (Sandbox Code Playgroud)
其他解决方案更灵活的语言环境:
NSNumberFormatter *formatter = [NSNumberFormatter new];
formatter.locale = [NSLocale localeWithLocaleIdentifier:@"ar"];
for (NSInteger i = 0; i < 10; i++) {
NSNumber *num = @(i);
str = [str stringByReplacingOccurrencesOfString:num.stringValue withString:[formatter stringFromNumber:num]];
}
Run Code Online (Sandbox Code Playgroud)
注意:此代码在没有IDE的情况下编写,可能会出现语法错误.
在快速3:
func convertEngNumToPersianNum(num: String)->String{
let number = NSNumber(value: Int(num)!)
let format = NumberFormatter()
format.locale = Locale(identifier: "fa_IR")
let faNumber = format.string(from: number)
return faNumber!
}
Run Code Online (Sandbox Code Playgroud)
强行打开前检查以防止碰撞.
斯威夫特 3:
但是其他答案是正确的,转换String为Int.
将 a 转换String为Int删除左零,这是不好的(特别是在转换手机和国民 ID 时)。为了避免这个问题,我更喜欢将每个英语数字替换为波斯语。
static func convertToPersian(text : String)-> String {
let numbersDictionary : Dictionary = ["0" : "?","1" : "?", "2" : "?", "3" : "?", "4" : "?", "5" : "?", "6" : "?", "7" : "?", "8" : "?", "9" : "?"]
var str : String = text
for (key,value) in numbersDictionary {
str = str.replacingOccurrences(of: key, with: value)
}
return str
}
Run Code Online (Sandbox Code Playgroud)
此方法还可用于替换文本中的数字,无需将纯数字转换为波斯语。
| 归档时间: |
|
| 查看次数: |
3711 次 |
| 最近记录: |