2013-10-06 57 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

尝试长度:

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。

您可能想要测试一些有效范围的响应或某些无效范围。也许,你可以使用正则表达式。

相关问题