문자열이 0이고 비어 있는지 확인합니다.
다음에 대한 문자열을 확인할 수 있는 방법이 있습니까?nil
그리고.""
스위프트에서?레일즈에서, 나는 사용할 수 있습니다.blank()
확인해야 합니다.
제가 현재 가지고 있는 것은 이것입니다만, 과잉 살상인 것 같습니다.
if stringA? != nil {
if !stringA!.isEmpty {
...blah blah
}
}
선택적 문자열을 다루는 경우 다음과 같이 작동합니다.
(string ?? "").isEmpty
그??
nil 합니다. nil 병합 연산자는 non-collesing이 아닌 경우에는 오른쪽을 반환합니다.
다음과 같이 사용하여 기본값을 반환할 수도 있습니다.
(string ?? "").isEmpty ? "Default" : string!
if-let-where 절을 사용할 수 있습니다.
스위프트 3:
if let string = string, !string.isEmpty {
/* string is not blank */
}
스위프트 2:
if let string = string where !string.isEmpty {
/* string is not blank */
}
5를 하면 Swift 5를 할 수 .Optional
의 내선 String
옵션 문자열이 비어 있거나 값이 없는 경우 반환하는 부울 속성이 있는 유형:
extension Optional where Wrapped == String {
var isEmptyOrNil: Bool {
return self?.isEmpty ?? true
}
}
하만지,String
isEmpty
protocol 규수 재한산의에 프로토콜을 하여 속성을 합니다.Collection
의 일반적인 조건서이일따코제반수있조다대니습체할건약을전드의라▁the따▁(raint다▁therefore있)을 대체할 수 .Wrapped == String
더것()과 () 더넓은것함께과▁( ()Wrapped: Collection
도록하록Array
,Dictionary
그리고.Set
또한 우리의 새로운 것에 혜택을 줍니다.isEmptyOrNil
속성:
extension Optional where Wrapped: Collection {
var isEmptyOrNil: Bool {
return self?.isEmpty ?? true
}
}
과 함께 String
s:
let optionalString: String? = nil
print(optionalString.isEmptyOrNil) // prints: true
let optionalString: String? = ""
print(optionalString.isEmptyOrNil) // prints: true
let optionalString: String? = "Hello"
print(optionalString.isEmptyOrNil) // prints: false
과 함께 Array
s:
let optionalArray: Array<Int>? = nil
print(optionalArray.isEmptyOrNil) // prints: true
let optionalArray: Array<Int>? = []
print(optionalArray.isEmptyOrNil) // prints: true
let optionalArray: Array<Int>? = [10, 22, 3]
print(optionalArray.isEmptyOrNil) // prints: false
출처:
문 사용
저는 성명서를 알기 전에 스위프트를 잠시 사용하고 있었습니다.이제 저는 열렬한 팬입니다.문과 유사하게 사용되지만 조기 반환이 가능하고 일반적으로 훨씬 깨끗한 코드를 만들 뿐입니다.
문자열이 0이거나 비어 있지 않은지 확인할 때 가드를 사용하려면 다음을 수행합니다.
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)
이렇게 하면 선택적 문자열의 랩이 해제되고 문자열이 비어 있지 않은지 한 번에 확인할 수 있습니다.이 값이 0(또는 비어 있음)이면 함수(또는 루프)에서 즉시 반환되고 모든 항목이 무시됩니다.하지만 가드 문이 통과되면 포장되지 않은 문자열을 안전하게 사용할 수 있습니다.
참고 항목
당신이 Swift 2를 사용하고 있다면, 다음은 제 동료가 생각해 낸 예입니다. 선택적 문자열에 isNilOrEmpty 속성을 추가합니다.
protocol OptionalString {}
extension String: OptionalString {}
extension Optional where Wrapped: OptionalString {
var isNilOrEmpty: Bool {
return ((self as? String) ?? "").isEmpty
}
}
그런 다음 선택적 문자열 자체에 isNilOrEmpty를 사용할 수 있습니다.
func testNilOrEmpty() {
let nilString:String? = nil
XCTAssertTrue(nilString.isNilOrEmpty)
let emptyString:String? = ""
XCTAssertTrue(emptyString.isNilOrEmpty)
let someText:String? = "lorem"
XCTAssertFalse(someText.isNilOrEmpty)
}
var str: String? = nil
if str?.isEmpty ?? true {
print("str is nil or empty")
}
str = ""
if str?.isEmpty ?? true {
print("str is nil or empty")
}
이 질문에 대한 많은 답이 있다는 것을 알지만, 그 중 어떤 것도 검증하기에 이것만큼 편리하지는 않은 것 같습니다.UITextField
데이터를 사용하는 가장 일반적인 경우 중 하나입니다.
extension Optional where Wrapped == String {
var isNilOrEmpty: Bool {
return self?.trimmingCharacters(in: .whitespaces).isEmpty ?? true
}
}
그냥 사용할 수 있습니다.
textField.text.isNilOrEmpty
다음 항목을 건너뛸 수도 있습니다..trimmingCharacters(in:.whitespaces)
빈로 간주하지 또는 공을빈 간로주지않하와 같은 더 .
var isValidInput: Bool {
return !isNilOrEmpty && self!.trimmingCharacters(in: .whitespaces).characters.count >= MIN_CHARS
}
문자열에 옵션이 아닌 것으로 액세스하려면 Ryan's Answer를 사용해야 하지만 문자열의 비공백에만 관심이 있다면 이에 대한 제가 선호하는 속기는 다음과 같습니다.
if stringA?.isEmpty == false {
...blah blah
}
때부터==
선택적인 불리언과 잘 작동합니다. 이것은 원래 의도를 모호하게 하지 않고 코드를 읽을 수 있게 해준다고 생각합니다.
: 이 반로확는경: 문열이자우려.nil
또는""
올바른 의도를 보여주기 위해 두 경우를 모두 명시적으로 확인하는 것을 선호합니다.
if stringA == nil || stringA?.isEmpty == true {
...blah blah
}
추천합니다.
if stringA.map(isEmpty) == false {
println("blah blah")
}
map
이 "" " " " "일 경우 합니다..Some
.
플레이그라운드 캡처는 또한 새로운 Swift 1.2에서 옵션 바인딩을 허용할 경우 또 다른 가능성을 보여줍니다.
스위프트 3
extension Optional where Wrapped == String {
/// Checks to see whether the optional string is nil or empty ("")
public var isNilOrEmpty: Bool {
if let text = self, !text.isEmpty { return false }
return true
}
}
선택적 문자열에서 다음과 같이 사용:
if myString.isNilOrEmpty { print("Crap, how'd this happen?") }
스위프트 3 체크 빈 문자열 최선의 방법
if !string.isEmpty{
// do stuff
}
Swift 3 솔루션 옵션인 unlapped 값을 사용하여 부울 값을 확인합니다.
if (string?.isempty == true) {
// Perform action
}
다음과 같은 작업을 수행해야 합니다.
if !(string?.isEmpty ?? true) { //Not nil nor empty }
Nil 병합 연산자는 옵션이 0이 아닌지 확인하고, 0이 아닌 경우에는 속성을 확인합니다. 이 경우에는 비어 있습니다.이 선택사항은 0일 수 있으므로 선택사항이 0일 때 사용할 기본값을 제공합니다.
이 미디엄 게시물을 기반으로 스위프트 5에 대한 약간의 수정을 통해, 저는 작동하는 이 코드를 얻었습니다.
if let stringA, !stringA.isEmpty {
...blah blah
}
확장을 만드는 것의 이점은 이해하지만, 작은 구성 요소/패키지만 필요로 하는 사람에게 도움이 될 수 있다고 생각했습니다.
많은 작업을 수행할 것으로 예상되는 경우 사용자 지정 기능을 직접 생성할 수 있습니다.
func isBlank (optionalString :String?) -> Bool {
if let string = optionalString {
return string.isEmpty
} else {
return true
}
}
var optionalString :String? = nil
if isBlank(optionalString) {
println("here")
}
else {
println("there")
}
String 클래스 확장을 만듭니다.
extension String
{ // returns false if passed string is nil or empty
static func isNilOrEmpty(_ string:String?) -> Bool
{ if string == nil { return true }
return string!.isEmpty
}
}// extension: String
문자열에 하나 이상의 공백이 포함된 경우 TRUE가 반환됩니다.빈 문자열을 "비어 있음"으로 처리하려면...
return string!.trimmingCharacters(in: CharacterSet.whitespaces).isEmpty
...대신.기초가 필요합니다.
이렇게 사용...
if String.isNilOrEmpty("hello world") == true
{ print("it's a string!")
}
Swift 3 이것은 문자열이 정말로 비어 있는지 확인하는 데 잘 작동합니다.공백이 있으면 is Empty가 true를 반환합니다.
extension String {
func isEmptyAndContainsNoWhitespace() -> Bool {
guard self.isEmpty, self.trimmingCharacters(in: .whitespaces).isEmpty
else {
return false
}
return true
}
}
예:
let myString = "My String"
myString.isEmptyAndContainsNoWhitespace() // returns false
let myString = ""
myString.isEmptyAndContainsNoWhitespace() // returns true
let myString = " "
myString.isEmptyAndContainsNoWhitespace() // returns false
사용이 비어 있습니다.
"Hello".isEmpty // false
"".isEmpty // true
모두 사용 만족
extension String {
var isBlank: Bool {
return allSatisfy({ $0.isWhitespace })
}
}
"Hello".isBlank // false
"".isBlank // true
선택적 문자열 사용
extension Optional where Wrapped == String {
var isBlank: Bool {
return self?.isBlank ?? true
}
}
var title: String? = nil
title.isBlank // true
title = ""
title.isBlank // true
참조: https://useyourloaf.com/blog/empty-strings-in-swift/
이것은 다음을 준수하는 모든 유형에 대한 일반적인 솔루션입니다.Collection
을 합니다.String
:
extension Optional where Wrapped: Collection {
var isNilOrEmpty: Bool {
self?.isEmpty ?? true
}
}
Swift 5.6 - Xcode 13
extension Optional where Wrapped: Collection {
var isEmptyOrNil: Bool {
guard let self = self else { return true }
return self.isEmpty
}
}
용도:
var name: String?
if name.isEmptyOrNil {
///true
}
name = "John Peter"
guard !name.isEmptyOrNil else { return }
/// Name is not empty
로컬 데이터베이스에서 서버로 또는 그 반대로 전달되는 값을 처리할 때, 저는 ?와 !의 값을 처리하는 데 너무 많은 어려움을 겪었습니다.
그래서 저는 null 케이스를 처리하기 위해 Swift 3.0 유틸리티를 만들었고 코드에 있는 ?와 !를 거의 완전히 피할 수 있습니다.
func str(_ string: String?) -> String {
return (string != nil ? string! : "")
}
예:-
이전:
let myDictionary: [String: String] =
["title": (dbObject?.title != nil ? dbObject?.title! : "")]
이후:
let myDictionary: [String: String] =
["title": str(dbObject.title)]
그리고 유효한 문자열을 확인해야 할 때,
if !str(dbObject.title).isEmpty {
//do stuff
}
이를 통해 합리적인 코드를 작성한 후 수많은 ?와 !를 추가하고 제거하는 수고를 덜 수 있었습니다.
3항 연산자(조건 연산자라고도 함)를 사용합니다.C++ forever!
):
if stringA != nil ? stringA!.isEmpty == false : false { /* ... */ }
그stringA!
강제 분리 래핑은 다음과 같은 경우에만 발생합니다.stringA != nil
그래서 안전합니다.그== false
장황함은 또 다른 느낌표보다 어느 정도 더 읽을 수 있습니다.!(stringA!.isEmpty)
.
저는 개인적으로 약간 다른 형태를 선호합니다.
if stringA == nil ? false : stringA!.isEmpty == false { /* ... */ }
위의 진술에서, 모든 것이 즉시 매우 명백합니다.if
변수가 다음일 때 블록이 실행되지 않습니다.nil
.
UITextField에서 값을 가져오고 다음을 확인할 때 유용합니다.nil
&empty
끈
@IBOutlet weak var myTextField: UITextField!
기능을 입력합니다(탭을 누를 때).button
) UITextField에서 문자열을 가져오고 다른 작업을 수행합니다.
@IBAction func getStringFrom_myTextField(_ sender: Any) {
guard let string = myTextField.text, !(myTextField.text?.isEmpty)! else { return }
//use "string" to do your stuff.
}
이것으로 해결할 수 있습니다.nil
뿐만 아니라 가치도empty
현을 매다
그것은 저에게 완벽하게 잘 작동했습니다.
당신은 이 기능을 사용할 수 있습니다.
class func stringIsNilOrEmpty(aString: String) -> Bool { return (aString).isEmpty }
언급URL : https://stackoverflow.com/questions/29381994/check-string-for-nil-empty
'programing' 카테고리의 다른 글
현재 메서드의 이름을 가져옵니다. (0) | 2023.05.08 |
---|---|
UIScrollView를 콘텐츠에 맞게 자동 크기 조정하는 방법 (0) | 2023.05.08 |
MongoDB - 중첩 배열의 개체 업데이트 (0) | 2023.05.08 |
Python 3.4 비동기 코드를 테스트하는 방법은 무엇입니까? (0) | 2023.05.08 |
Azure 기능이 로컬 환경에서 실행되는지 확인하는 방법은 무엇입니까?Azure 함수에서 역할 환경이 작동하지 않습니다. (0) | 2023.04.28 |