2012-02-11 91 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]; 

然後,只需檢索文本。不需要轉換或字符串操作。