Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS从NSNumberFormatter字符串获取值_Ios_Nsnumberformatter - Fatal编程技术网

iOS从NSNumberFormatter字符串获取值

iOS从NSNumberFormatter字符串获取值,ios,nsnumberformatter,Ios,Nsnumberformatter,我使用下面的代码将文本字段中输入的数字转换为美元货币。所以它显示$符号,每3位数字(从右起)加一个。我正在文本字段中设置格式化文本 - (void)textFieldDidEndEditing:(UITextField *)textField { NSString *pureNumbers = [[textField.text componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] in

我使用下面的代码将文本字段中输入的数字转换为美元货币。所以它显示$符号,每3位数字(从右起)加一个。我正在文本字段中设置格式化文本

- (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
时所做的吗?谢谢。这段代码是由某个人写的,我不明白写了什么。。。。从现在起,我将在论坛上发布之前保持活跃状态。再次感谢。