Как считать числа в строке - PullRequest
0 голосов
/ 03 февраля 2011

У меня есть строка с длиной строки 56.

Сначала я попытался убедиться, что строка имеет правильную длину, если нет, приложение должно заполнить несколько меток другим содержимым.

if ([[NSString stringWithContentsOfURL:siteURL] length] == 56) {

    NSString *siteString = @"http://www.xxxx/iphone.txt";   
    NSURL *siteURL  = [NSURL URLWithString:siteString];
    myField2.text = [NSString stringWithContentsOfURL:siteURL encoding:NSUTF8StringEncoding error:nil]; 
    [NSString stringWithContentsOfURL:siteURL encoding:NSUTF8StringEncoding error:nil];
    NSArray *myArray = [[NSString stringWithContentsOfURL:siteURL encoding:NSUTF8StringEncoding error:nil] componentsSeparatedByString: @":  "];


    [myField2 setText: [myArray objectAtIndex: 0]];
    [myField3 setText: [myArray objectAtIndex: 1]]; 
    [myField4 setText: [myArray objectAtIndex: 2]];
    [myField5 setText: [myArray objectAtIndex: 3]];
    [myField6 setText: [myArray objectAtIndex: 4]];


}
else {

    [myField2 setText: @"-"];
    [myField3 setText: @"-"];   
    [myField4 setText: @"-"];
    [myField5 setText: @"-"];
    [myField6 setText: @"-"];
}

В моей строке обычно 28 чисел.Я хочу, чтобы мое приложение проверяло строку, есть ли 28 чисел или нет.Я пытался использовать следующий код:

for (int number = 0; number = 28; number++) {

}

Но я думаю, что это не правильный путь.

У меня есть заданный диапазон, 56, и возможночисла 0-9, есть идеи, как должен выглядеть код?

Заранее спасибо:)

Ну, я попробовал:

for (int number = 0; number < 56; number++){
    unichar c = [[NSString stringWithContentsOfURL:siteURL] characterAtIndex:number];

    if (c >= '0'  &&  c <= '9'){
        number++;

        if (number = 28) {
            NSString *siteString = @"http://www.xxxx/iphone.txt";   
            NSURL *siteURL  = [NSURL URLWithString:siteString];
            myField2.text = [NSString stringWithContentsOfURL:siteURL encoding:NSUTF8StringEncoding error:nil]; 
            [NSString stringWithContentsOfURL:siteURL encoding:NSUTF8StringEncoding error:nil];
            NSArray *myArray = [[NSString stringWithContentsOfURL:siteURL encoding:NSUTF8StringEncoding error:nil] componentsSeparatedByString: @":  "];


            [myField2 setText: [myArray objectAtIndex: 0]];
            [myField3 setText: [myArray objectAtIndex: 1]]; 
            [myField4 setText: [myArray objectAtIndex: 2]];
            [myField5 setText: [myArray objectAtIndex: 3]];
            [myField6 setText: [myArray objectAtIndex: 4]];
        }

        else {
            [myField2 setText: @"-"];
            [myField3 setText: @"-"];   
            [myField4 setText: @"-"];
            [myField5 setText: @"-"];
            [myField6 setText: @"-"];

        }

}
}

Но это не такЯ думаю, я сделал несколько ошибок: x

текущий код:

int i = 0; 

for (int numberc = 0; numberc < 56; numberc++){ 
    unichar c = [[NSString stringWithContentsOfURL:siteURL encoding:NSASCIIStringEncoding error:&error] characterAtIndex:numberc]; 

    // Funktion die bestimmt, dass bei jedem positiven Match der Zähler um eins erhöht wird.    
    if (c >= '0'  &&  c <= '9'){ //Parameter für das Absuchen des Strings
        i++;
    }
}

Ответы [ 4 ]

3 голосов
/ 03 февраля 2011

Ваш цикл for должен идти по длине строки. например,

int nLength = [myString length];
for (int number = 0; number < nLength; number++)

Тогда вы захотите получить один символ из этой строки. Используйте метод characterAtIndex.

unichar c = [myString characterAtIndex:number];

Затем проверьте, чтобы этот символ находился между «0» и «9». например,

if (c >= '0'  &&  c <= '9')

РЕДАКТИРОВАТЬ: Дополнительные примечания относительно комментариев. Чтобы посчитать числа, начинайте целое число с нуля перед циклом for:

int numbercount = 0;

Внутри теста для символа, являющегося числовым, увеличьте его там:

if (c >= '0'  &&  c <= '9')
{
    numbercount++;

Проверка на то, что это 28. Обратите внимание на == для сравнения:

if (numbercount == 28)

РЕДАКТИРОВАТЬ: Дополнительные примечания для следующего комментария

int i = 0;
NSString *url = [NSString stringWithContentsOfURL:siteURL encoding:NSASCIIStringEncoding error:&error];

for (int numberc = 0; numberc < 56; numberc++)
{
    unichar c =  [url characterAtIndex:numberc];

    // Funktion die bestimmt, dass bei jedem positiven Match der Zähler um eins erhöht wird.
    if (c >= '0'  &&  c <= '9')
    {
        //Parameter für das Absuchen des Strings         
        i++;
    }
} 
1 голос
/ 03 февраля 2011
for (i=0; i<string.length; i++) { 
    if ([[string characterAtIndex:i] intValue] <= 9 || [[string characterAtIndex:i] intValue] >= 0 )
        numbercounter ++;
}
0 голосов
/ 13 ноября 2014

как насчет этого:

NSCharacterSet *digits=[NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
NSArray *tmpArray=[yourString componentsSeparatedByCharactersInSet:digits];
int nDigits=(int)tmpArray.count-1;

затем делайте с цифрами все, что хотите

0 голосов
/ 03 февраля 2011
for (i=0; i<string.length; i++) { 
    if ([string characterAtIndex:i]=='0' || [string characterAtIndex:i]=='1' ... || [string characterAtIndex:i]=='9')
        numbercounter ++;
}

Надеюсь, это поможет

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