В Objective C для проверки строк можно сделать следующее:
if ([myString isEqualToString:@""]) {
NSLog(@"myString IS empty!");
} else {
NSLog(@"myString IS NOT empty, it is: %@", myString);
}
Как обнаруживать пустые строки в Swift?
В Objective C для проверки строк можно сделать следующее:
if ([myString isEqualToString:@""]) {
NSLog(@"myString IS empty!");
} else {
NSLog(@"myString IS NOT empty, it is: %@", myString);
}
Как обнаруживать пустые строки в Swift?
Теперь появилась встроенная способность обнаруживать пустую строку с помощью .isEmpty
:
if emptyString.isEmpty {
print("Nothing to see here")
}
Документация Apple перед выпуском: "Строки и символы" .
Краткий способ проверить, является ли строка нулевой или пустой:
var myString: String? = nil
if (myString ?? "").isEmpty {
print("String is nil or empty")
}
Я полностью переписываю свой ответ (снова). На этот раз это потому, что я стал поклонником guard
statement и раннее возвращение. Это делает намного более чистый код.
Проверьте нулевую длину.
let myString: String = ""
if myString.isEmpty {
print("String is empty.")
return // or break, continue, throw
}
// myString is not empty (if this point is reached)
print(myString)
Если инструкция if
проходит, вы можете безопасно использовать строку, зная, что она не пуста. Если он пуст, функция вернется раньше и ничего не изменится.
Проверьте нулевую или нулевую длину.
let myOptionalString: String? = nil
guard let myString = myOptionalString, !myString.isEmpty else {
print("String is nil or empty.")
return // or break, continue, throw
}
// myString is neither nil nor empty (if this point is reached)
print(myString)
Это разворачивает опцию и проверяет, что она не пуста в одно и то же время. После передачи инструкции guard
вы можете безопасно использовать свою развернутую непустую строку.
использование
var isEmpty: Bool { get }
пример
let lang = "Swift 5"
if lang.isEmpty {
print("Empty string")
}
Вот как я проверяю, является ли строка пустой. Под "пустым" я подразумеваю строку, которая либо пуста, либо содержит только символы пробела/новой строки.
struct MyString {
static func blank(text: String) -> Bool {
let trimmed = text.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
return trimmed.isEmpty
}
}
Как пользоваться:
MyString.blank(" ") // true
Вы также можете использовать дополнительное расширение, поэтому вам не нужно беспокоиться о развертывании или использовании == true
:
extension String {
var isBlank: Bool {
return self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
}
}
extension Optional where Wrapped == String {
var isBlank: Bool {
if let unwrapped = self {
return unwrapped.isBlank
} else {
return true
}
}
}
Примечание: при вызове этого параметра в необязательном режиме убедитесь, что вы не используете ?
, иначе он по-прежнему требует развертывания.
Выполнять проверку и длину nil одновременно Swift 2.0 и iOS 9 можно использовать
if(yourString?.characters.count > 0){}
isEmpty будет делать, как вы думаете, будет, если string == "", он вернет true. Некоторые из других ответов указывают на ситуацию, когда у вас есть необязательная строка.
ПОЖАЛУЙСТА, используйте Необязательная цепочка!!!!
Если строка не равна nil, будет использоваться isEmpty, иначе она не будет.
Ниже, optionalString НЕ будет установлен, потому что строка равна nil
let optionalString: String? = nil
if optionalString?.isEmpty == true {
optionalString = "Lorem ipsum dolor sit amet"
}
Очевидно, вы не использовали бы указанный выше код. Прибыль исходит из разбора JSON или других ситуаций, когда у вас есть ценность или нет. Это гарантирует, что код будет запущен, если есть значение.
Для необязательных строк:
if let string = string where !string.isEmpty
{
print(string)
}
Проверить только пробелы и символы новой строки в тексте
extension String
{
var isBlank:Bool {
return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).isEmpty
}
}
используя
if text.isBlank
{
//text is blank do smth
}
if myString?.startIndex != myString?.endIndex {}
Что насчет
if let notEmptyString = optionalString where !notEmptyString.isEmpty {
// do something with emptyString
NSLog("Non-empty string is %@", notEmptyString)
} else {
// empty or nil string
NSLog("Empty or nil string")
}
Вот что я использую (работает как для строк, так и для других объектов):
func checkValidityOfData(_ data: Any?, withStringCheck mode: Bool) -> Bool {
// Check if the data is valid or not.
if ((data != nil) && !(data is NSNull)) {
// Check if we need to perform string checks.
if (mode == true) {
// Check the input data string.
let dataCheck = (data as! String).trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
// Check if the string is valid.
if (dataCheck.count > 0) {
// Ensure the string is not literally "<null>".
if ((data as! String) == "<null>") {
return false
} else {
return true
}
} else {
return false
}
} else {
return true
}
} else {
return false
}
}