Вопрос по objective-c, ipad, iphone – Вхождения символов в строковой цели C

11

Как я могу посчитать вхождение символа в строку?

Example

String: 123-456-7890

I want to find the occurrence count of "-" in given string

Повторение:stackoverflow.com/questions/938095/… hellslam

Ваш Ответ

7   ответов
2

int numberOfOccurences = [[theString componentsSeparatedByString:@"-"] count];
1

replaceOccurrencesOfString:withString:options:range: методNSString

33

NSString *string = @"123-456-7890";
int times = [[string componentsSeparatedByString:@"-"] count]-1;

NSLog(@"Counted times: %i", times);

Output:

Counted times: 2

Это также лучший код, чтобы найти, сколько ПРОСТРАНСТВ произошло в строке. , ,
@hfossli, вы не правы, он вернет 4 и 2 соответственно.
@ C & # x153; ты абсолютно прав! Сумасшедший на мой взгляд.gist.github.com/hfossli/4c76a96b34574cb938ce
Что, если строка начинается с «-»?
@ Оскар Это все еще будет работать, я только что проверил. Вы сами пробовали?
1
int total = 0;
NSString *str = @"123-456-7890";
for(int i=0; i<[str length];i++)
{
    unichar c = [str characterAtIndex:i];
    if (![[NSCharacterSet alphanumericCharacterSet] characterIsMember:c])
    {
        NSLog(@"%c",c);
        total++;
    }
}
NSLog(@"%d",total);

1
int num = [[[myString mutableCopy] autorelease] replaceOccurrencesOfString:@"-" withString:@"X" options:NSLiteralSearch range:NSMakeRange(0, [myString length])];

replaceOccurrencesOfString:withString:options:range: Метод возвращает количество замен, которые были сделаны, поэтому мы можем использовать это, чтобы выяснить, сколько-s в вашей строке.

добавил авто-релиз
@ H2CO3 С этим кодом это также невозможно, поскольку у вас нет указателя на копию. Да, это выходит за рамки, но многие новички, скорее всего, дословно копируют этот код, а затем задаются вопросом, почему у них происходит утечка памяти.
Это правда, если вы делаете ручное управление памятью, тоautorelease необходимо. Я так давно пользуюсь ARC, что я забыл, что не все это делают!
Разве это не вызывает утечку памяти, когда вы не выпускаете копию?
@trojanfoe Вы, конечно, должны выпустить копию, но это выходит за рамки ответа.
2

unichar findC;
int count = 0;
NSString *strr = @"123-456-7890";

for (int i = 0; i<strr.length; i++) {
    findC = [strr characterAtIndex:i];
    if (findC == '-'){
        count++;
    }
}

NSLog(@"%d",count);
0

если строка начинается или заканчивается символом, который вы проверяете.

Используйте это вместо:

int numberOfOccurances = (int)yourString.length - (int)[yourString stringByReplacingOccurrencesOfString:@"-" withString:@""].length;

Похожие вопросы