NSString - 2-значный номер - PullRequest
1 голос
/ 13 мая 2011

`Привет, у меня есть строка с 2-значными числами (например, 32), но я хочу получить и использовать ее как 2-значное число (например, 3 и 2). как мне это сделать? заранее спасибо.

  NSString *depositOverTotalRwy = [NSString stringWithFormat:@"%@", [deposit text]];
NSArray *components = [depositOverTotalRwy
                       componentsSeparatedByString:@"/"];
NSString *firstThird = [components objectAtIndex:0];
unichar firstChar = [firstThird characterAtIndex: 0];
NSString *firstCharStr = [NSString stringWithFormat:@"%c", firstChar];

unichar secChar = [firstThird characterAtIndex: 1];
NSString *secCharStr = [NSString stringWithFormat:@"%c",secChar];






NSLog(@"%@ over %@", firstCharStr, secCharStr);

if ([firstCharStr  isEqualToString: @"1"]) {
    firstCharStr=@"wet";
    NSLog(@"wet");
}
if ([firstCharStr  isEqualToString: @"2"]) {
    firstCharStr=@"snow";

    NSLog(@"snow");
}
if ([firstCharStr  isEqualToString: @"3"]) {
    firstCharStr=@"ice";
    NSLog(@"ice");
    }

if ([secCharStr  isEqualToString: @"1"]) {
    secCharStr=@"wet";
    NSLog(@"wet");
}
if ([secCharStr  isEqualToString: @"2"]) {
    secCharStr=@"snow";

    NSLog(@"snow");
}
if ([secCharStr  isEqualToString: @"3"]) {
    secCharStr=@"ice";
    NSLog(@"ice");
}

NSString *secThird = [components objectAtIndex:1];
if ([secThird isEqualToString: @"1"]) {
    secThird = @"wet";
    NSLog(@"wet");
}
if ([secThird isEqualToString:@"2"]) {
    secThird = @"snow";

    NSLog(@"snow");
}
if ([secThird isEqualToString:@"3"]) {
    secThird = @"ice";

    NSLog(@"ice");
}

NSString *thirdThird = [components objectAtIndex:2];

if ([thirdThird isEqualToString: @"1"]) {
    thirdThird = @"wet";
    NSLog(@"wet");
}
if ([thirdThird isEqualToString:@"2"]) {
    thirdThird = @"snow";

    NSLog(@"snow");
}
if ([thirdThird isEqualToString:@"3"]) {
    thirdThird = @"ice";

    NSLog(@"ice");
}

dep.text = [NSString stringWithFormat:@"1/3 %@%@ 2/3 %@ 3/3 %@", firstCharStr,secCharStr, secThird, thirdThird];

теперь он работает с цифрами (т. Е. 32), но если я попытаюсь поставить только одну цифру, я получу сообщение об ошибке .... есть идеи? спасибо

Ответы [ 4 ]

2 голосов
/ 13 мая 2011

NSString's -characterAtIndex: должен сделать трюк:

NSString            *firstThird = @"32";
unichar             c1, c2;

c1 = [ firstThird characterAtIndex: 0 ];
c2 = [ firstThird characterAtIndex: 1 ];

switch ( c1 ) {
case '3':
    ...
}
1 голос
/ 13 мая 2011

Перебирайте и извлекайте по одному символу за раз из вашей строки.

for(int i = 0; i < [myString length]; i++)
{
      char extractedChar = [myString characterAtIndex:i];

      if(extractedChar == '1')....
}
0 голосов
/ 13 мая 2011
NSString *firstThird = [components objectAtIndex:0];//--- I get 32 from this string but i want 3 and 2
NSArray *numbersAsStrings = [firstThird componentsSeparatedByString:@""];
NSMutableArray *digits = [NSMutableArray array];
for (NSString *digit in numbersAsStrings)
{
    [digits addObject:[NSNumber numberWithInt:[digit intValue]]];
}

Этот образец может взять любое число и преобразовать его в массив NSNumber s.

Доступ:

int int1 = [[digits objectAtIndex:0]intValue]; //returns 3
0 голосов
/ 13 мая 2011

Пропуск любых сложностей Юникода, как насчет извлечения символов

unichar firstChar = [firstThird characterAtIndex: 0];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...