programing

Swift에서 빈 문자열을 확인하시겠습니까?

muds 2023. 5. 6. 16:45
반응형

Swift에서 빈 문자열을 확인하시겠습니까?

목표 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 사전 릴리스 설명서: "문자문자열".

문자열이 0인지 비어 있는지 확인하는 간단한 방법은 다음과 같습니다.

var myString: String? = nil

if (myString ?? "").isEmpty {
    print("String is nil or empty")
}

저는 제 답변을 완전히 다시 쓰고 있습니다.이번에는 성명서조기 귀국의 팬이 되었기 때문입니다.그것은 훨씬 더 깨끗한 코드를 만듭니다.

비선택적 문자열

길이가 0인지 확인합니다.

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문이 통과하면 문자열이 비어 있지 않음을 알고 안전하게 사용할 수 있습니다.이 값이 비어 있으면 기능이 일찍 반환되고 문제가 발생한 후에는 아무 것도 반환되지 않습니다.

선택적 문자열

길이가 0인지 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)

이렇게 하면 옵션의 포장이 해제되고 동시에 비어 있지 않은지 확인합니다.과통후를 에.guard문을 사용하면 랩핑되지 않은 비어 있지 않은 문자열을 안전하게 사용할 수 있습니다.

Xcode 11.3 swift 5.2 이상에서

사용하다

var isEmpty: Bool { get } 

let lang = "Swift 5"

if lang.isEmpty {
   print("Empty string")
}

공백을 무시하려면

if lang.trimmingCharacters(in: .whitespaces).isEmpty {
   print("Empty string")
}

문자열이 비어 있는지 확인하는 방법은 다음과 같습니다.'blank'는 공백 또는 공백/새줄 문자만 포함된 문자열을 의미합니다.

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
        }
    }
}

는 " " " " " " " " " " " " " " " 을 하십시오.?그렇지 않으면 포장을 풀어야 합니다.

제로 체크와 길이를 동시에 수행하려면 Swift 2.0과 iOS 9 이후를 사용할 수 있습니다.

if(yourString?.characters.count > 0){}

is Empty는 문자열 == " "이면 true가 반환됩니다.다른 답변 중 일부는 선택적 문자열이 있는 상황을 가리킵니다.

선택적 체인을 사용하십시오!!!!

문자열이 0이 아니면 is Empty가 사용되고 그렇지 않으면 사용되지 않습니다.

아래에서는 문자열이 0이므로 선택적 문자열이 설정되지 않습니다.

let optionalString: String? = nil
if optionalString?.isEmpty == true {
     optionalString = "Lorem ipsum dolor sit amet"
}

분명히 당신은 위의 코드를 사용하지 않을 것입니다.JSON 구문 분석 또는 값이 있거나 없는 다른 상황에서 얻을 수 있습니다.이렇게 하면 값이 있을 경우 코드가 실행됩니다.

텍스트에서 공백 및 줄 바꿈 문자만 확인

extension String
{
    var  isBlank:Bool {
        return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).isEmpty
    }
}

사용.

if text.isBlank
{
  //text is blank do smth
}

스위프트 문자열(비어 있음 vs 개수)

사용해야 합니다..isEmpty대신에.count

  • .isEmpty복잡도 = O(1)

  • .count복잡도 = O(n)

isEmpty사용하지 않음.count후드 아래에서 시작 인덱스와 종료 인덱스를 비교합니다.startIndex == endIndex

공식 문서 컬렉션 개수

복잡성: 컬렉션이 랜덤 액세스 컬렉션을 준수하는 경우 O(1); 그렇지 않은 경우 O(n), 여기서 n은 컬렉션의 길이입니다.

싱글character의 많은 조합으로 표현될 수 있습니다.Unicode scalar values(다른 메모리 설치 공간), 카운트를 계산하려면 모든 유니코드 스칼라 값을 반복해야 합니다.

String = alex
String = \u{61}\u{6c}\u{65}\u{78}
[Char] = [a, l, e, x]

Unicode text = alex
Unicode scalar values(UTF-32) = u+00000061u+0000006cu+00000065u+00000078
1 Character == 1 extended grapheme cluster == set of Unicode scalar values

//Char á == extended grapheme cluster of Unicode scalar values \u{E1}
//Char á == extended grapheme cluster of Unicode scalar values \u{61}\u{301}

let a1: String = "\u{E1}" // Unicode text = á, UTF-16 = \u00e1, UTF-32 = u+000000e1
print("count:\(a1.count)") //count:1

// Unicode text = a, UTF-16 = \u0061, UTF-32 = u+00000061
// Unicode text =  ́, UTF-16 = \u0301, UTF-32 = u+00000301
let a2: String = "\u{61}\u{301}" // Unicode text = á, UTF-16 = \u0061\u0301, UTF-32 = u+00000061u+00000301
print("count:\(a2.count)") //count:1

선택적 문자열의 경우는 어떻습니까?

if let string = string where !string.isEmpty
{
    print(string)
}
if myString?.startIndex != myString?.endIndex {}

문자열 또는 어레이에 다음과 같은 작은 확장자를 추가하는 것이 좋습니다.

extension Collection {
    public var isNotEmpty: Bool {
        return !self.isEmpty
    }
}

그것으로 당신은 읽기 쉬운 코드를 쓸 수 있습니다.이 두 줄을 비교합니다.

if !someObject.someParam.someSubParam.someString.isEmpty {}

그리고.

if someObject.someParam.someSubParam.someString.isNotEmpty {}

첫 번째 줄의 시작 부분에! 기호를 놓치기 쉽습니다.

public extension Swift.Optional {
    
    func nonEmptyValue<T>(fallback: T) -> T {
        
        if let stringValue = self as? String, stringValue.isEmpty {
            return fallback
        }
        
        if let value = self as? T {
            return value
        } else {
            return fallback
        }
    }
}

어때

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")
}

다음 확장을 사용할 수 있습니다.

extension String {

    static func isNilOrEmpty(string: String?) -> Bool {
        guard let value = string else { return true }

        return value.trimmingCharacters(in: .whitespaces).isEmpty
    }

}

다음과 같이 사용합니다.

let isMyStringEmptyOrNil = String.isNilOrEmpty(string: myString)

언급URL : https://stackoverflow.com/questions/24133157/check-empty-string-in-swift

반응형