2012-08-09 1 views
0

나는 워드 형식으로 통화를 변환하는 함수를 작성하지만 내 문제는 textfeild 값을 100000을 둘 때 나는 인도의 형식을 일 라크 필요하다고하지만, 그것은 나를 십만에게 그것에 대해 너무 모든 솔루션을 제공합니다.아이폰에서 단어 철자로 통화를 변환하는 방법?

NSString *str1 = txtAmount.text; 
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    [formatter setNumberStyle: NSNumberFormatterSpellOutStyle]; 

    NSString *localeStr = [appDel.countryCodeDict valueForKey:appDel.selectedCountry]; 


    if ([appDel.selectedCountry isEqualToString:@"France"]) { 
     localeStr = @"fr"; 
    } 
    if ([appDel.selectedCountry isEqualToString:@"Germany"]) { 
     localeStr = @"de"; 
    } 


    NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:localeStr]; 
    [formatter setLocale:usLocale]; 

    [formatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; 

    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 


    NSArray *valueArr=[str1 componentsSeparatedByString:@"."]; 


    [formatter setNumberStyle: NSNumberFormatterSpellOutStyle]; 

    NSString *firstStr = [valueArr objectAtIndex:0]; 
    NSString *seconfStr = [valueArr lastObject];   

    if (valueArr.count==2 && ![seconfStr isEqualToString:@""]) { 
     double firstAmt = [firstStr doubleValue]; 
     NSString *convertStr = [formatter stringFromNumber:[NSNumber numberWithDouble:firstAmt]]; 

     double secondAmt = [seconfStr doubleValue]; 
     NSString *convertStr1 = [formatter stringFromNumber:[NSNumber numberWithDouble:secondAmt]]; 

     NSString *finalStr = [convertStr stringByAppendingFormat:@" %@ %@ %@",appDel.firstCurrencystr,convertStr1,appDel.secondCurrencystr]; 
     NSLog(@"%@",finalStr); 
     NSString *firstCapChar = [[finalStr substringToIndex:1] capitalizedString]; 

     tempStr = [finalStr stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:firstCapChar]; 

    }else{ 

     double firstAmt = [firstStr doubleValue]; 
     NSString *convertStr = [formatter stringFromNumber:[NSNumber numberWithDouble:firstAmt]]; 
     convertStr = [convertStr stringByAppendingFormat:@" %@",appDel.firstCurrencystr]; 
     NSString *firstCapChar = [[convertStr substringToIndex:1] capitalizedString]; 
     tempStr = [convertStr stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:firstCapChar]; 

    } 

    appDel.lblAmountView.lblAmount.text = tempStr; 

그 어떤 아이디어.

+0

실용적인 질문인지 확인하려면 몇 가지 코드를 공유해야합니다. – bryanmac

+0

나는 아직도이 질문을 이해하지 못합니다. –

+0

@MichaelDautermann txtAmount.text = 100000을 입력하면 단어 형식이 십만 형식으로 변환되지만 하나의 lakh (인도 형식)이 필요합니다. – Dhaval

답변

2
at last i convert the hole currency in lakh and crore format of india: 



-(NSString *)stringfromNumberIndia:(NSString *)str_word 
    { 
     NSString *[email protected]""; 

     NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
     [formatter setNumberStyle: NSNumberFormatterSpellOutStyle]; 

     NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_IN"]; 
     [formatter setLocale:usLocale]; 
     [formatter setNumberStyle: NSNumberFormatterSpellOutStyle]; 


     if ([str_word length]>5) { 

      NSString* str_convert = [str_word substringFromIndex:[str_word length]-5]; 
      NSString* str_convert1 = [str_word substringToIndex:[str_word length]-5]; 
      NSLog(@"str :%@",str_convert); 
      NSLog(@"str1 :%@",str_convert1); 
      tempStr = [[self stringfromNumberIndia:str_convert] stringByAppendingString:tempStr]; 
      int l=[str_convert1 length]; 
      for (int i=0; i<l;) { 

       NSRange range; 
       if (l>2 && i == 0) { 
        range=NSMakeRange(l-i-2, 2); 
       } 
       else{ 
        range=NSMakeRange(0, l-i); 
       } 
       NSString *str_first=[str_convert1 substringWithRange:range]; 
       if ([str_first intValue] == 0) { 
        if (i == 0) 
         i+=2; 
        else 
         break; 
        continue; 
       } 
       NSLog(@"str_first:%@",str_first); 
       if (i== 0) { 
        str_first=[formatter stringFromNumber:[NSNumber numberWithDouble:[str_first doubleValue]]]; 
        str_first = [str_first stringByAppendingFormat:@" lakh "]; 
        tempStr = [str_first stringByAppendingString:tempStr]; 
       } 
       else { 
        str_first =[self stringfromNumberIndia:str_first]; 
        str_first = [str_first stringByAppendingFormat:@" crore "]; 
        tempStr = [str_first stringByAppendingString:tempStr]; 
        break; 
       } 
       i+=2; 
      } 
     } 
     else if ([str_word intValue] !=0){ 
      double Amt = [str_word doubleValue]; 
      NSString *convertStr = [formatter stringFromNumber:[NSNumber numberWithDouble:Amt]]; 

      NSString *firstCapChar = [convertStr substringToIndex:1]; 
      tempStr = [convertStr stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:firstCapChar]; 
     } 
     return tempStr; 

    } 

감사합니다.

2

말라 '는 코딩 것을 알고 있지만 당신이 통화 인도 스타일로하려면이 코드를 체크 아웃 : -

NSLocale *indiaLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_IN"] autorelease]; 
double currency = 1000000000.00; 
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle]; 
[numberFormatter setLocale:indiaLocale]; 

NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithInt:currency]]; 
NSString *str2 = [NSString stringWithFormat:@"Converted:%@",numberAsString]; 

NSLog(@"String:%@",str2); 
+0

인디언 형식으로 주문 하시겠습니까? –

관련 문제