2013-10-06 2 views
-1

Я вызываю webservice в ответе, я получаю строку. Когда я печатаю строку в NSLog, она возвращает пустую строку и когда я проверяю длину, которую она возвращает 1.Как проверить строку, содержащую неизвестный символ?

Так что моя проблема в том, что я могу проверить, что строка пуста или нет.

#define CHECK_NA_STRING(str) (str == (id)[NSNull null] || [str length] == 0)[email protected]"N/A":str 

NSLog(@"%@",CHECK_NA_STRING([dict objectForKey:@"ADDRESS_A"])); // nothing empty string 
NSLog(@"%d",[CHECK_NA_STRING([dict objectForKey:@"ADDRESS_A"]) length]); // return 1 

Так как я могу проверить, что строка пуста или нет? Спасибо.

+0

нормально да содержит один пробел –

ответ

0

Итак, строка - это просто пробел? Тогда он все равно будет иметь длину 1.

Try:

NSString* string = ...; 

if([string isKindOfClass:[NSString class]]) 
{ 
    NSCharacterSet* invertedWhitespaceSet = [[NSCharacterSet whitespaceAndNewlineCharacterSet] invertedSet]; 

    const NSRange nonEmptyCharacterRange = [string rangeOfCharacterFromSet:invertedWhitespaceSet options:NSCaseInsensitiveSearch]; 

    if(nonEmptyCharacterRange.location == NSNotFound) 
    { 
     // Empty invalid string  
    } 
    else 
    { 
     // Non-empty valid string 
    } 
} 
0

Строка не считается пустой, если она содержит двоичный нуль (нулевой символ). Например, воспользуйтесь этим кодом:

#define CHECK_NA_STRING(str) (str == (id)[NSNull null] || [str length] == 0)[email protected]"N/A":str 
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 
[dict setObject:@"\0" forKey:@"ADDRESS_A"]; 
NSLog(@"%@",CHECK_NA_STRING([dict objectForKey:@"ADDRESS_A"])); // nothing empty string 
NSLog(@"%d",[CHECK_NA_STRING([dict objectForKey:@"ADDRESS_A"]) length]); // return 1 

Ничего не напечатает для первого NSLOG, а второе напечатает «1». Действительно, строка имеет один символ; это просто испортит ваш NSLOG.

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

Смежные вопросы