Ваш объективный код неверен. Это плохо для нулевых строк. В цели C фактически используется: if (myString.length) {'это строка с длиной}. Это работает на ноль строк. Это просто и легко читается.
Том Андерсен
Ответы:
241
Теперь есть встроенная возможность обнаружения пустой строки с помощью .isEmpty:
if emptyString.isEmpty {
print("Nothing to see here")}
Вы также можете использовать isEqualToString, что удобно, если вы инициализируете переменную с помощью NSString ('var emptyString: NSString'): emptyString.isEqualToString ("")
Sven
1
это условие не выполняется, когда пользователь вводит пробелы.
Это прекрасно, но как бы вы использовали развернутое значение? Принудительно разворачивать?
Nostalg.io
5
@halfnibble Вы можете сделать либо (скрытое или принудительное развертывание), либо вы можете сделать:if let myString = myString where !myString.isEmpty { ... }
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?=nilguardlet 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инструкции вы можете смело использовать вашу развернутую непустую строку.
Есть ли разница между вашим ответом и исключением?
Ахмад Ф
Это не работает, если пользователь просто вводит кучу пробелов.
Supertecnoboff
2
В типографии пробелы считаются символом, поэтому он не пустой. Если вы хотите, то измените условие на 'lang.trimmingCharacters (in: .whitespaces) .isEmpty'
Saranjith
28
Вот как я проверяю, является ли строка пустой. Под «пустым» я подразумеваю строку, которая либо пуста, либо содержит только символы пробела / новой строки.
Я был взволнован этим, но это не сработало :( Я на Swift 3.0
teradyl
@teradyl "Не работал", вы имеете в виду, что вы получаете ошибку, проблемы с автозаполнением или что-то еще? Это должно работать, если что-то не изменилось, о чем я не знаю, но автозаполнение не всегда выберет правильную версию.
Джон Монтгомери,
Как и в случае, я все еще получаю ошибку во время компиляции, когда я пытаюсь использовать, optionalString?isBlankчто она должна быть развернута.
терадил
1
Для меня это не работает currentIncident.priority?.description.isBlank. Говорит: Value of optional type 'Bool?' not unwrapped; did you mean to use '!' or '?'?. Я должен сделать, (currentIncident.priority?.description ?? "").isBlankчто делает расширения Сорта бессмысленными. Свифт 4.1.
Карстен Хагеманн
1
@CarstenHagemann Это потому priority, что там не обязательно. Если descriptionбы он был просто необязательным, он бы работал, но вы не можете обойти родительский объект, являющийся необязательным, как этот (потому что если prioritynil, то у него даже нет descriptionсвойства для проверки на пустоту в первую очередь).
Джон Монтгомери
9
Чтобы сделать нулевую проверку и длину одновременно Swift 2.0 и iOS 9, вы можете использовать
isEmpty сделает так, как вы думаете, если string == "", он вернет true. Некоторые из других ответов указывают на ситуацию, когда у вас есть необязательная строка.
Если строка не равна nil, будет использоваться isEmpty, иначе - нет.
Ниже optionString НЕ будет установлен, потому что строка имеет значение nil
let optionalString:String?=nilif optionalString?.isEmpty ==true{
optionalString ="Lorem ipsum dolor sit amet"}
Очевидно, вы не будете использовать приведенный выше код. Выигрыш приходит от анализа JSON или других подобных ситуаций, когда у вас есть значение или нет. Это гарантирует, что код будет запущен, если есть значение.
iflet 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")}
Ответы:
Теперь есть встроенная возможность обнаружения пустой строки с помощью
.isEmpty
:Предварительная документация Apple: «Строки и символы» .
источник
Краткий способ проверить, является ли строка нулевой или пустой:
источник
if let myString = myString where !myString.isEmpty { ... }
Я полностью переписываю свой ответ ( снова ). На этот раз это потому, что я стал поклонником
guard
заявления и досрочного возвращения . Это делает код намного чище.Необязательная строка
Проверьте на нулевую длину.
Если
if
оператор проходит, то вы можете безопасно использовать строку, зная, что она не пустая. Если он пуст, функция вернется рано, и после этого ничего не будет иметь значения.Необязательная строка
Проверьте нулевую или нулевую длину.
Это разворачивает необязательный и проверяет, что он не пустой в то же время. После прохождения
guard
инструкции вы можете смело использовать вашу развернутую непустую строку.источник
В Xcode 11.3 swift 5.2 и новее
использование
пример
Если вы хотите игнорировать пробелы
источник
Вот как я проверяю, является ли строка пустой. Под «пустым» я подразумеваю строку, которая либо пуста, либо содержит только символы пробела / новой строки.
Как пользоваться:
источник
Вы также можете использовать дополнительное расширение, чтобы вам не пришлось беспокоиться о развертывании или использовании
== true
:Примечание: при вызове этого для необязательного, убедитесь, что не используете,
?
иначе это все еще потребует распаковки.источник
optionalString?isBlank
что она должна быть развернута.currentIncident.priority?.description.isBlank
. Говорит:Value of optional type 'Bool?' not unwrapped; did you mean to use '!' or '?'?
. Я должен сделать,(currentIncident.priority?.description ?? "").isBlank
что делает расширения Сорта бессмысленными. Свифт 4.1.priority
, что там не обязательно. Еслиdescription
бы он был просто необязательным, он бы работал, но вы не можете обойти родительский объект, являющийся необязательным, как этот (потому что еслиpriority
nil, то у него даже нетdescription
свойства для проверки на пустоту в первую очередь).Чтобы сделать нулевую проверку и длину одновременно Swift 2.0 и iOS 9, вы можете использовать
источник
isEmpty сделает так, как вы думаете, если string == "", он вернет true. Некоторые из других ответов указывают на ситуацию, когда у вас есть необязательная строка.
ПОЖАЛУЙСТА, используйте дополнительные цепи !!!!
Если строка не равна nil, будет использоваться isEmpty, иначе - нет.
Ниже optionString НЕ будет установлен, потому что строка имеет значение nil
Очевидно, вы не будете использовать приведенный выше код. Выигрыш приходит от анализа JSON или других подобных ситуаций, когда у вас есть значение или нет. Это гарантирует, что код будет запущен, если есть значение.
источник
Проверьте, чтобы в тексте были только пробелы и символы новой строки
с помощью
источник
Для необязательных строк, как насчет:
источник
источник
Что о
источник
Я могу рекомендовать добавить небольшое расширение для String или Array, которое выглядит
С его помощью вы можете написать код, который легче читать. Сравните эти две строки
и
Это легко пропустить ! знак в начале первой линии.
источник
Вы можете использовать это расширение:
и затем используйте это так:
источник