当前位置:  开发笔记 > 编程语言 > 正文

如何在Objective-C中进行字符串转换?

如何解决《如何在Objective-C中进行字符串转换?》经验,为你挑选了5个好方法。

我想将一个字符串转换为一个双字符串,并在对其进行一些数学运算后,将其转换回字符串.

我如何在Objective-C中执行此操作?

有没有办法将double舍入到最接近的整数?



1> olliej..:

您可以将NSString转换为double

double myDouble = [myString doubleValue];

舍入到最近的int可以完成为

int myInt = (int)(myDouble + (myDouble>0 ? 0.5 : -0.5))

老实说,我不确定是否有更简化的方式转换回字符串

NSString* myNewString = [NSString stringWithFormat:@"%d", myInt];


您不一定要这样做,因为不同的语言环境格式编号不同.有些人会写一千个"1000",而其他人会写"1000"而其他人会写"1.000" - 你从哪里得到 - [NSString doubleValue]?
并且NSString不能包含数字,只能包含数字的表示.该表示可以是由区域设置不同的各种格式中的任何一种.
Double是数字数据类型 - 它不包含任何格式.调用[NSString doubleValue]将返回1000,因为它只是一个数字.
你可能想把@Barry Wark的答案整合到你的中,`[[NSNumber numberWithInt:myInt] stringValue]

2> Chris Hanson..:

要真正正确地从字符串转换为数字,您需要使用NSNumberFormatter为您正在读取字符串的语言环境配置的实例.

不同的区域设置将以不同的方式格 例如,在世界的某些地方,COMMA用作小数点分隔符,而在其他地方PERIOD用作 - 和千位分隔符(使用时)相反.除非它是一个空间.或根本不存在.

这实际上取决于输入的来源.最安全的做法是配置一个NSNumberFormatter输入格式化的方式,并用它-[NSFormatter numberFromString:]来获取输入NSNumber.如果您想处理转换错误,可以-[NSFormatter getObjectValue:forString:range:error:]改用.


或者您可以使用本地化扫描程序,例如使用[NSScanner localizedScannerWithString:]创建的扫描程序,然后[scanner scanDouble:&aDouble]将根据用户的当前区域设置扫描一个.

3> Barry Wark..:

添加到olliej的答案,您可以使用NSNumber's 将int转换回字符串stringValue:

[[NSNumber numberWithInt:myInt] stringValue]

stringValueNSNumber调用上descriptionWithLocale:nil,为您提供值的本地化字符串表示.我不确定是否[NSString stringWithFormat:@"%d",myInt]会给你一个适当的本地化代表myInt.



4> Paul Dixon..:

对于负数,olliej的舍入方法是错误的

2.4舍入是2(olliej的方法得到这个权利)

-2.4舍入为-2(olliej的方法返回-1)

这是另一种选择

  int myInt = (int)(myDouble + (myDouble>0 ? 0.5 : -0.5))

你当然可以使用math.h中的舍入函数



5> miker..:

这是NSNumberFormatter读取本地化数字String(xCode 3.2.4,osX 10.6)的工作示例,以便为其他人节省我刚刚花费的时间.注意:虽然它可以处理诸如"8,765.4"之类的尾随空白,但它无法处理前导空格,并且无法处理杂散文本字符.(错误的输入字符串:"8"和"8q"和"8 q".)

NSString *tempStr = @"8,765.4";  
     // localization allows other thousands separators, also.
NSNumberFormatter * myNumFormatter = [[NSNumberFormatter alloc] init];
[myNumFormatter setLocale:[NSLocale currentLocale]]; // happen by default?
[myNumFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
     // next line is very important!
[myNumFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; // crucial

NSNumber *tempNum = [myNumFormatter numberFromString:tempStr];
NSLog(@"string '%@' gives NSNumber '%@' with intValue '%i'", 
    tempStr, tempNum, [tempNum intValue]);
[myNumFormatter release];  // good citizen

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有