将数字更改为文本 iOS



我不知道如何解释这一点,但我需要这样的东西,我不太确定该怎么做。我有一个文本字段,用户在其中输入一个数字。例如"200"。我得到一个标签,必须显示"两百"(在单词中输入的数字)

关于如何做到这一点的任何想法?

提前感谢对不起我的英语不好

试试这个:

 //textField.text is 200
 NSInteger someInt = [textField.text integerValue];
 NSString *numberWord;
 NSNumber *numberValue = [NSNumber numberWithInt:someInt];
 NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
 [numberFormatter setNumberStyle:NSNumberFormatterSpellOutStyle];
 numberWord = [numberFormatter stringFromNumber:numberValue];
 NSLog(@"numberWord= %@", numberWord); // Answer: two hundred
 yourLabel.text = numberWord;

您可以使用 NSNumberFormatter 它可以将 NSNumber 转换为其单词表示形式。

NSNumber* number = @100;
NSString* textNumber;
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterSpellOutStyle];
textNumber = [numberFormatter stringFromNumber:number];

这是完全不同的东西。有点复杂和奇怪,但如果你想对输出进行更多的手动控制,你可以摆弄它。此设置提供最大为 100,000 的值(以演示条件设置)。

玩得愉快:

int theInteger = 1,123;
int convert1000 = 0;
int convert100 = 0;
int convert10 = 0;
int convert1 = 0;
NSString * wordThousand = @"Thousand";
NSString * wordHundred = @"Hundred";
NSArray *wordsArraySingleDigit = [[NSArray alloc] initWithObjects:@"Zero",@"One",@"Two",@"Three",@"Four",@"Five",@"Six",@"Seven",@"Eight",@"Nine",nil];
NSArray *wordsArrayDoubleDigit = [[NSArray alloc] initWithObjects:@"Ten",@"Eleven",@"Twelve",...,@"Ninety Eight", @"Ninety Nine",nil];

convert1000 = (theInteger - (theInteger % 1000))/1000;
convert100 = ((theInteger - (convert1000 * 1000)) - ((theInteger - (convert1000 * 1000)) % 100))/100;
convert10 = ((theInteger - (convert1000 *1000)-(convert100 *100)) - ((theInteger -(convert1000 *1000) - (convert100 *100)) % 10))/10;
convert1 = (theInteger - (convert1000 *1000)-(convert100 *100) - (convert10 *10));
if (theInteger > = 10000 && < 100000){
    NSString * convertedThousand = [wordsArrayDoubleDigit objectAtIndex : convert1000];
    convertedThousand = [NSString stringWithFormat: @“%@ %@“,convertedThousand,wordThousand];
    NSLog (convertedThousand);
 }
if (theInteger >= 1000 && <= 10000){
    NSString * convertedThousand = [wordsArraySingleDigit objectAtIndex : convert1000];
    convertedThousand = [NSString stringWithFormat: @“%@ %@“,convertedThousand,wordThousand];
    NSLog (convertedThousand);
}

NSString * convertedHundred = [wordsArraySingleDigit objectAtIndex : convert100];
convertedHundred = [NSString stringWithFormat: @“%@ %@“, convertedHundred,wordHundred];
NSLog (convertedHundred);
NSString * convertedTen = [wordsArraySingleDigit objectAtIndex : convert10];
convertedTen = [NSString stringWithFormat: @“%@“, convertedTen];
NSLog (convertedTen);

NSString *convertedOne = [wordsArraySingleDigit objectAtIndex : convert1];
NSLog (convertedOne);

希望这有所帮助或为您提供替代方法的起点。

我认为您应该考虑每种可能性并制作一组 IF 语句,例如,如果数字的第一个数字是 3,则写"三",如果数字有 4 位数字,则显示"数千"......当然,您可以组织代码以使该过程变得简单。

最新更新