我想檢查一個特定的字符串是否只是由空格組成。它可以是任意數量的空格,包括零。什麼是最好的方式來確定?檢查一個NSString是否只是由空格構成
回答
NSString *str = @" ";
NSCharacterSet *set = [NSCharacterSet whitespaceCharacterSet];
if ([[str stringByTrimmingCharactersInSet: set] length] == 0)
{
// String contains only whitespace.
}
修整空間並檢查剩餘字符的數量。看看這個帖子here
嘗試剝離它的空間,並將其與@ 「」:
NSString *probablyEmpty = [myString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
BOOL wereOnlySpaces = [probablyEmpty isEqualToString:@""];
試試這個:
[mystring stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
或
[mystring stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
這是一個'NSMutableString'方法。 –
恩,不,它不是。它返回一個新的NSString並在NSString.h中聲明。 – picciano
其實它並沒有在任何地方定義。 –
這裏是基於@Alexander Akers的答案的NSString
上的一個易於重用的類別,但這也是返回YES
如果字符串包含 「新線」 ......
@interface NSString (WhiteSpaceDetect)
@property (readonly) BOOL isOnlyWhitespace;
@end
@implementation NSString (WhiteSpaceDetect)
- (BOOL) isOnlyWhitespace {
return ![self stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]].length;
}
@end
,併爲那些你不信任的靈魂在那裏的..
#define WHITE_TEST(x) for (id z in x) printf("\"%s\" : %s\n",[z UTF8String], [z isOnlyWhitespace] ? "YES" :"NO")
WHITE_TEST(({ @[
@"Applebottom",
@"jeans\n",
@"\n",
@""
"",
@" \
\
",
@" "
];}));
➜
"Applebottom" : NO
"jeans
" : NO
"
" : YES
"" : YES
" " : YES
" " : YES
下面是一個簡單的迅捷解決方案:
//Check if string contains only empty spaces and new line characters
static func isStringEmpty(#text: String) -> Bool {
let characterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet()
let newText = text.stringByTrimmingCharactersInSet(characterSet)
return newText.isEmpty
}
爲什麼投了票? – Esqarrouth
下面是相同的雨燕版本代碼,
var str = "Hello World"
if count(str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())) == 0 {
// String is empty or contains only white spaces
}
else {
// String is not empty and contains other characters
}
或者你可以寫一個簡單的字符串擴展如下圖所示,並使用相同的代碼與在多個位置更好的可讀性。
extension String {
func isEmptyOrContainsOnlySpaces() -> Bool {
return count(self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())) == 0
}
}
,只是把它用這樣的任意字符串,
var str1 = " "
if str.isEmptyOrContainsOnlySpaces() {
// custom code e.g Show an alert
}
這是顯著快檢查的非空格字符,而不是微調整個字符串的範圍。
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+上運行。 代碼here。粘貼到任何XCTestCase子類中。
這個答案是迄今爲止最好的。我真的很驚訝,有那麼多人盲目地去修剪解決方案。你應該修正一個拼寫錯誤:如果range.location!= NSNotFound,這意味着你已經找到了非WS字符,這意味着字符串不是空的。所以你需要反轉條件。 – battlmonstr
不得不使用雨燕3驗證碼:
func isEmptyOrContainsOnlySpaces() -> Bool {
return self.trimmingCharacters(in: .whitespaces).characters.count == 0
}
我真的很驚訝,我是第一個誰提出正則表達式
NSString *string = @" ";
NSString *pattern = @"^\\s*$";
NSRegularExpression *expression = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
NSArray *matches = [expression matchesInString:string options:0 range:NSMakeRange(0, string.length)];
BOOL isOnlyWhitespace = matches.count;
還是在斯威夫特:
let string = " "
let pattern = "^\\s*$"
let expression = try! NSRegularExpression(pattern:pattern, options:[])
let matches = expression.matches(in: string, options: [], range:NSRange(location: 0, length: string.utf16.count))
let isOnlyWhitespace = !matches.isEmpty
- 1. 檢查NSString是否只有字母
- 2. 檢查一個字符串是否只有字母+空格?
- 3. 檢查一個NSString是否是一個html字符串?
- 4. 檢查是否一個textarea是空
- 5. 什麼是防彈方法來檢查NSString是否爲空/空?
- 6. 檢查是否是NSString的整數
- 7. 檢查一個char數組是否由2個相同的數組構成
- 8. 如何檢查URL是否只包含一個路由參數?
- 9. 檢查一個nsstring是否與另一個字符串匹配
- 10. 檢查arraylist是否只包含空值
- 11. 檢查一個變量是否爲空
- 12. 檢查一個值是否爲空
- 13. 檢查一個NSMutableDictionary是否爲空?
- 14. 檢查一個表是否爲空
- 15. 檢查一個BSTR是否爲空
- 16. 檢查一個對象是否爲空
- 17. NSSet touchesShouldBegin:UIScrollView只是一個NSString
- 18. 檢查一個DIV的內容是否只是一個圖像
- 19. 如何檢測NSString是否爲空?
- 20. 一個解決方案檢查每個表格是否爲空
- 21. 檢查結構是否爲空
- 22. 檢查結構是否爲空:Javascript
- 23. 檢測字符串是否由空格組成?
- 24. 如何檢查是否一個特定的詞由空格的字符串
- 25. 檢查NSString是否爲空或僅包含空格或製表符?
- 26. 正則表達式來檢查一個字符串是否只有空格
- 27. Java - 是否有任何理由檢查單例是否爲空?
- 28. 檢查單元格是否爲空
- 29. PHP - 檢查單元格是否爲空
- 30. 檢查excel單元格是否爲空
取決於情況,人們可能想使用'whitespaceAndNelinelineCharacterSet'來代替(exa只是它在錫上所說的)。 – BoltClock