iOS从NSNumberFormatter字符串获取值
我使用下面的代码将文本字段中输入的数字转换为美元货币。所以它显示$符号,每3位数字(从右起)加一个。我正在文本字段中设置格式化文本iOS从NSNumberFormatter字符串获取值,ios,nsnumberformatter,Ios,Nsnumberformatter,我使用下面的代码将文本字段中输入的数字转换为美元货币。所以它显示$符号,每3位数字(从右起)加一个。我正在文本字段中设置格式化文本 - (void)textFieldDidEndEditing:(UITextField *)textField { NSString *pureNumbers = [[textField.text componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] in
- (void)textFieldDidEndEditing:(UITextField *)textField
{
NSString *pureNumbers = [[textField.text componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];
//Convert entered text to NSNumber
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * myNumber = [f numberFromString:pureNumbers];
NSString *currencyString = [currencyFormatter internationalCurrencySymbol];
NSString *format = [currencyFormatter positiveFormat];
format = [format stringByReplacingOccurrencesOfString:@"*" withString:currencyString];
// ¤ is a placeholder for the currency symbol
[currencyFormatter setPositiveFormat:format];
NSString *currencyString1 = [currencyFormatter stringFromNumber:myNumber];
NSLog(@"Text is %@",currencyString1);
textField.text = currencyString1;
}
现在,我如何才能取回删除数字格式化程序输入的数字?
例子:
我在文本字段中输入了5000。文本字段中的格式设置为$5000。
我想从用户输入的原始值文本字段中返回“5000”。您可以使用
UITextField
的leftView
属性:
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 15, 15)];
label.text = @"$";
label.font = [UIFont systemFontOfSize:10];
[label sizeToFit];
textField.leftView = label;
[self.view addSubview:textField];
然后检索文本。不需要转换或字符串操作。我猜您是从某处复制并粘贴了大部分格式化函数,而不是自己编写,因为它已经包含了执行此操作的代码。在第一行,你说:
NSString *pureNumbers = [[textField.text componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];
这将获取一个字符串并去掉所有非数字字符。这已经完全符合你的要求了。如果你说
NSString *pureNumbers = [@"$5,000" componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];
pureNumbers字符串现在等于@“5000”。要将其转换为实际可以进行数学运算的数值,可以说:
double number = [pureNumbers doubleValue];
提供示例,“输入的实际数字”很模糊。@CocoaFu,我提供了一个我期望的示例。这不正是您的代码在获得
myNumber
时所做的吗?谢谢。这段代码是由某个人写的,我不明白写了什么。。。。从现在起,我将在论坛上发布之前保持活跃状态。再次感谢。