programing

문자열이 0이고 비어 있는지 확인합니다.

padding 2023. 5. 8. 21:56
반응형

문자열이 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
    }

}

하만지,StringisEmptyprotocol 규수 재한산의에 프로토콜을 하여 속성을 합니다.Collection의 일반적인 조건서이일따코제반수있조다대니습체할건약을전드의라▁the따▁(raint다▁therefore있)을 대체할 수 .Wrapped == String더것()과 () 더넓은것함께과▁( ()Wrapped: Collection 도록하록Array,Dictionary그리고.Set또한 우리의 새로운 것에 혜택을 줍니다.isEmptyOrNil속성:

extension Optional where Wrapped: Collection {

    var isEmptyOrNil: Bool {
        return self?.isEmpty ?? true
    }

}

과 함께 Strings:

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

과 함께 Arrays:

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

반응형