Dizgede bir karakterin oluşumunu nasıl sayabilirim?Bir String nesnesindeki karakter oluşumları C
Örnek
Dize: Ben oluşumu sayısını bulmak istiyoruz 123-456-7890
"-" Verilen dizede
Dizgede bir karakterin oluşumunu nasıl sayabilirim?Bir String nesnesindeki karakter oluşumları C
Örnek
Dize: Ben oluşumu sayısını bulmak istiyoruz 123-456-7890
"-" Verilen dizede
Sadece böyle yapabilirsiniz:
NSString *string = @"123-456-7890";
int times = [[string componentsSeparatedByString:@"-"] count]-1;
NSLog(@"Counted times: %i", times);
Çıktı: Bu işi yapacak
Counted times: 2
int num = [[[myString mutableCopy] autorelease] replaceOccurrencesOfString:@"-" withString:@"X" options:NSLiteralSearch range:NSMakeRange(0, [myString length])];
replaceOccurrencesOfString:withString:options:range:
yöntem yapılan değişiklik sayısını döndürür, bu yüzden kaç tane -
s dizinizde.
bir bellek sızıntısına neden olmaz ? – trojanfoe
@trojanfoe Kursun kopyasını serbest bırakmalısınız, ancak cevabın kapsamı dışında. –
@ H2CO3 Bu kodla, kopyaya bir işaretçiniz olmadığı için de mümkün değildir. Bu kapsam dışı, evet, ama birçok yeni başlayanlar bu kodu kopyalamaya ve muhtemelen neden bellek sızdıklarını merak ediyorlar. – trojanfoe
Bu çalıştı NSString
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);
ait replaceOccurrencesOfString:withString:options:range:
yöntemi kullanabilirsiniz. Umarım yardımcı olur. mutlu kodlama :)
,
int numberOfOccurences = [[theString componentsSeparatedByString:@"-"] count];
I Bunu senin için yaptı. bunu dene.
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);
tekrarlayın: Eğer kopya serbest değildir gibi http://stackoverflow.com/questions/938095/nsstring-number-of-occurrences-of-a-character – hellslam