0

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

- (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。它在文本字段中格式化为 5,000 美元。我想从用户输入的原始值的文本字段中取回“5000”。

4

2 回答 2

1

我猜您是从某个地方复制并粘贴了大部分格式化函数,而不是自己编写,因为它已经包含执行此操作的代码。在第一行你说:

NSString *pureNumbers = [[textField.text componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];

这需要一个字符串并删除任何非数字字符。所以这已经完全符合您的要求。例如,如果你说

NSString *pureNumbers = [@"$5,000" componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];

pureNumbers 字符串现在等于@"5000"。要将其转换为您可以实际进行数学运算的数值,您可以说:

double number = [pureNumbers doubleValue];
于 2012-02-11T14:40:28.637 回答
0

您可以使用以下leftView属性UITextField

  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];

然后只需检索文本。无需转换或字符串操作。

于 2012-02-11T14:10:12.990 回答