2015-10-29 2 views
1

Я хочу преобразовать буквенно-цифровую строку в Number. Буквенно-цифровая строка содержит набор числовых цифр [0-9], набор буквенных букв [A-Z] и малые буквы задают [a-z] соответственно номерам [00-09], [10-35] и [36-62].Как преобразовать буквенно-цифровую строку в NUMBER или NUMBER?

За одну букву или цифру необходимо создать две цифры, если буква «y», тогда число будет «61», или буква «C», тогда число будет «12» или цифра «6» 'тогда число будет' 06 '.

Например:

буквенно-цифровая строка: «yc69CJjVvf»

НОМЕР: 61380609121945315841

ответ

2

Создайте plist, где вам нужно вручную ввести данные для цифр. Установите [0-9], «Буквенные буквы» задают [A-Z] и маленькие буквы [a-z].

См. Изображение ниже.

enter image description here

И создать для цикла, где вы должны пройти альфа value.and БАТЭ вы получите номер для этого.

NSString *path = [[NSBundle mainBundle] pathForResource: 
         @"YourPlistName" ofType:@"plist"]; 

    NSMutableArray *arrData = [[NSMutableArray alloc] initWithContentsOfFile:path]; 
    NSMutableArray *arrCode=[arrData valueForKey:@"code"]; 
    NSMutableArray *arrname=[arrData valueForKey:@"name"]; 
     NSString *code = [[NSString alloc] init]; 


    for (int i=0;i<[arrname count];i++) 
    { 

     if ([[arrname objectAtIndex:i] isEqualToString:StrAplahbates])//StrAplahbates is the string for which you want number value. 
     { 
      [code appendFormat:@"%@",arrCode [i]]; 



     } 
    } 

Возможно, это поможет вам.

+0

Спасибо ... это помогает мне ... –

+0

@ParthPatel Счастливое кодирование. – BHUMICA

0

Перейти к через строку по полукокса, если символ является символом преобразования на номер строки, если символ является числом, чем format («0% d») и накапливать результаты в одну строку и преобразовывать их в число.

+0

я попробовал формат (0% d) для числа, но он также добавляет «S» к числу ... Например, номер «1», тогда он дает «01S», но я хочу только «01» –

+0

Извините, это была моя ошибка ... Это отлично работает для цифры [0-9] ... Спасибо, но как насчет писем? –

+0

Сделайте некоторую таблицу букв и их кодов или создайте массив и получите индекс, чем добавьте delta (например, A имеет idx = 0, чем code = idx + detla, где delta = 10) – arthas

1

Вы можете создать NSMutableDictionary с символьно-> Число и Number-> Character, то вы можете пройти через строку и преобразовать строки, пример:

NSMutableDictionary *stringToNumbersDictionary = [[NSMutableDictionary alloc] init]; 
NSMutableDictionary *numberToStringDIctionary = [[NSMutableDictionary alloc] init]; 
for(int i = 0;i <= 9; i++) { 
    NSString *keyWithZero = [NSString stringWithFormat:@"0%d",i]; 
    NSString *keyWithoutZero = [NSString stringWithFormat:@"%d",i]; 

    // So you can look up with 06 and 6 to get the number-string 
    [stringToNumbersDictionary setObject:keyWithZero forKey:keyWithoutZero]; 
    [numberToStringDIctionary setObject:keyWithoutZero forKey:keyWithZero]; 
} 

// from ASCII A to ASCII Z 
for(int i = 65;i <= 90;i++) { 
    NSString *key = [NSString stringWithFormat:@"%c",i]; 
    NSString *numberKey = [NSString stringWithFormat:@"%d",i]; 

    [stringToNumbersDictionary setObject:numberKey forKey:key]; 
    [numberToStringDIctionary setObject:key forKey:numberKey]; 
} 

// from ASCII a to ASCII z 
for(int i = 97;i <= 122;i++) { 
    NSString *key = [NSString stringWithFormat:@"%c",i]; 
    NSString *numberKey = [NSString stringWithFormat:@"%d",i]; 

    [stringToNumbersDictionary setObject:numberKey forKey:key]; 
    [numberToStringDIctionary setObject:key forKey:numberKey]; 
} 

Для преобразования строки в NUMBER-струнные вы можете использовать

- (NSString *)numberStringWithString:(NSString *)string { 
    NSMutableString *result = [[NSMutableString alloc] init]; 
    for(NSInteger index = 0;index < string.length;index++) { 
     unichar c = [string characterAtIndex:index]; 
     NSString *key = [NSString stringWithFormat:@"%c",c]; 
     [result appendString:stringToNumbersDictionary[key]]; 
    } 
    return result; 
} 

И преобразовать его обратно

- (NSString *)stringWithNumberString:(NSString *)numberString { 
    NSMutableString *result = [[NSMutableString alloc] init]; 
    for(NSInteger index = 0;index < numberString.length;index+=2) { 
     NSString *key = [numberString substringWithRange:NSMakeRange(index, 2)]; 
     [result appendString:numberToStringDIctionary[key]]; 
    } 
    return result; 
}