检查NSString是否仅由空格构成

Suc*_*chi 48 string cocoa cocoa-touch objective-c nsstring

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

Ale*_*ers 105

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

  • 根据情况,可能需要使用`whitespaceAndNewlineCharacterSet`(完全按照它在锡上所说的那样). (22认同)

Eim*_*tas 8

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

NSString *probablyEmpty = [myString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
BOOL wereOnlySpaces = [probablyEmpty isEqualToString:@""];
Run Code Online (Sandbox Code Playgroud)


ars*_*ius 8

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

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

请注意,"填充"可能是混合空格和文本的最常见情况.

testSpeedOfSearchFilled - 0.012 sec
testSpeedOfTrimFilled - 0.475 sec
testSpeedOfSearchEmpty - 1.794 sec
testSpeedOfTrimEmpty - 3.032 sec
Run Code Online (Sandbox Code Playgroud)

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