2012-02-11 80 views
0

我使用以下代码将文本字段中的转换后的输入数字格式化为显示USD货币。所以它显示$符号和每3位数字(从右侧)a被添加。我在文本字段中设置格式化文本。iOS从NSNumberFormatter获取值字符串

- (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”,这是用户输入的原始值。

+0

提供示例,“实际输入的数字”含糊不清。 – zaph 2012-02-11 13:46:26

+0

@CocoaFu,我提供了一个我期待的例子。 – Satyam 2012-02-11 13:50:12

+0

这不正是你的代码已经做了什么,当它得到'myNumber'? – Tommy 2012-02-11 14:01:42

回答

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

谢谢。这段代码是由一个人编写的,我不明白所写的是什么....从现在开始,我会在论坛发帖之前积极主动。再次感谢。 – Satyam 2012-02-12 05:51:14

0

您可以使用UITextFieldleftView属性:

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

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