如何计算字符串中的数字

时间:2011-02-03 12:48:31

标签: objective-c

我有一个字符串长度为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 个答案:

答案 0 :(得分:3)

你的for循环需要沿着字符串的长度。 e.g。

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

然后你会想从该字符串中获取一个字符。使用characterAtIndex方法。

unichar c = [myString characterAtIndex:number];

然后检查该字符在'0'和'9'之间。 e.g。

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 :(得分:1)

for (i=0; i<string.length; i++) { 
    if ([[string characterAtIndex:i] intValue] <= 9 || [[string characterAtIndex:i] intValue] >= 0 )
        numbercounter ++;
}

答案 2 :(得分:0)

for (i=0; i<string.length; i++) { 
    if ([string characterAtIndex:i]=='0' || [string characterAtIndex:i]=='1' ... || [string characterAtIndex:i]=='9')
        numbercounter ++;
}

希望这有帮助

答案 3 :(得分:0)

怎么样:

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

然后随心所欲地使用nDigits