检查一个NSString是否仅仅由空格组成

我想检查一个特定的字符串是否由空格组成。 它可以是任意数量的空格,包括零。 什么是最好的方式来确定?


NSString *str = @"         ";
NSCharacterSet *set = [NSCharacterSet whitespaceCharacterSet];
if ([[str stringByTrimmingCharactersInSet: set] length] == 0)
{
    // String contains only whitespace.
}

尝试剥离空格并将其与@“”进行比较:

NSString *probablyEmpty = [myString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
BOOL wereOnlySpaces = [probablyEmpty isEqualToString:@""];

检查非空白字符的范围而不是修剪整个字符串的速度要快得多。

NSCharacterSet *inverted = [[NSCharacterSet whitespaceAndNewlineCharacterSet] invertedSet];
NSRange range = [string rangeOfCharacterFromSet:inverted];
BOOL empty = (range.location == NSNotFound);

请注意,“填充”可能是混合了空格和文本的最常见情况。

testSpeedOfSearchFilled - 0.012 sec
testSpeedOfTrimFilled - 0.475 sec
testSpeedOfSearchEmpty - 1.794 sec
testSpeedOfTrimEmpty - 3.032 sec

测试在我的iPhone 6+上运行。 代码在这里。 粘贴到任何XCTestCase子类中。

链接地址: http://www.djcxy.com/p/85227.html

上一篇: Check if an NSString is just made out of spaces

下一篇: Padding a number in NSString