У меня есть один объект NSString, например: - ($ 45,0000)
Теперь я хочу найти, содержит ли эта строка() или нет
Как я могу это сделать?
У меня есть один объект NSString, например: - ($ 45,0000)
Теперь я хочу найти, содержит ли эта строка() или нет
Как я могу это сделать?
Вы пытаетесь найти, содержит ли он хотя бы один из (
или )
? Вы можете использовать -rangeOfCharacterFromSet:
:
NSCharacterSet *cset = [NSCharacterSet characterSetWithCharactersInString:@"()"];
NSRange range = [mystr rangeOfCharacterFromSet:cset];
if (range.location == NSNotFound) {
// no ( or ) in the string
} else {
// ( or ) are present
}
Метод ниже вернет Да, если данная строка содержит заданный char
-(BOOL)doesString:(NSString *)string containCharacter:(char)character
{
if ([string rangeOfString:[NSString stringWithFormat:@"%c",character]].location != NSNotFound)
{
return YES;
}
return NO;
}
Вы можете использовать его следующим образом:
NSString *s = @"abcdefg";
if ([self doesString:s containCharacter:'a'])
NSLog(@"'a' found");
else
NSLog(@"No 'a' found");
if ([self doesString:s containCharacter:'h'])
NSLog(@"'h' found");
else
NSLog(@"No 'h' found");
Вывод:
2013-01-11 11:15: 03.830 CharFinder [17539: c07] 'a' найден
2013-01-11 11:15: 03.831 CharFinder [17539: c07] Нет "h" найдено
- (bool) contains: (NSString*) substring {
NSRange range = [self rangeOfString:substring];
return range.location != NSNotFound;
}
Я получил обобщенный ответ на ваш вопрос, который я использовал в своем коде. Этот код содержит следующие правила: 1. Никаких специальных символов 2. По крайней мере один капитал и один небольшой английский алфавит 3. Как минимум одна цифра
BOOL lowerCaseLetter,upperCaseLetter,digit,specialCharacter;
int asciiValue;
if([txtPassword.text length] >= 5)
{
for (int i = 0; i < [txtPassword.text length]; i++)
{
unichar c = [txtPassword.text characterAtIndex:i];
if(!lowerCaseLetter)
{
lowerCaseLetter = [[NSCharacterSet lowercaseLetterCharacterSet] characterIsMember:c];
}
if(!upperCaseLetter)
{
upperCaseLetter = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:c];
}
if(!digit)
{
digit = [[NSCharacterSet decimalDigitCharacterSet] characterIsMember:c];
}
asciiValue = [txtPassword.text characterAtIndex:i];
NSLog(@"ascii value---%d",asciiValue);
if((asciiValue >=33&&asciiValue < 47)||(asciiValue>=58 && asciiValue<=64)||(asciiValue>=91 && asciiValue<=96)||(asciiValue>=91 && asciiValue<=96))
{
specialCharacter=1;
}
else
{
specialCharacter=0;
}
}
if(specialCharacter==0 && digit && lowerCaseLetter && upperCaseLetter)
{
//do what u want
NSLog(@"Valid Password %d",specialCharacter);
}
else
{
NSLog(@"Invalid Password %d",specialCharacter);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Please Ensure that you have at least one lower case letter, one upper case letter, one digit and No Any special character"
delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
}
Почему всегда использовать NSCharactorSet? это простое и мощное решение
NSString *textStr = @"This is String Containing / Character";
if ([textStr containsString:@"/"])
{
NSLog(@"Found!!");
}
else
{
NSLog(@"Not Found!!");
Вы можете использовать
NSString rangeOfString: (NSString *) string
Если NSRange возвращается с свойством "location", равным NSNotFound, тогда строка не содержит переданную строку (или символ).