목표 C에서 문자열을 확인하기 위해 다음을 수행 할 수 있습니다.
if ([myString isEqualToString:@""]) {
NSLog(@"myString IS empty!");
} else {
NSLog(@"myString IS NOT empty, it is: %@", myString);
}
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 시험판 문서 : "문자열 및 문자" .
문자열이 nil인지 비어 있는지 확인하는 간결한 방법은 다음과 같습니다.
var myString: String? = nil
if (myString ?? "").isEmpty {
print("String is nil or empty")
}
if let myString = myString where !myString.isEmpty { ... }
나는 내 답변을 완전히 다시 작성하고 있습니다 ( 다시 ). 이번에는 guard
성명서 의 팬이 되었고 일찍 돌아 왔기 때문 입니다. 훨씬 깨끗한 코드를 만듭니다.
길이가 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인지 확인하십시오.
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")
}
공백 을 무시 하려면
if lang.trimmingCharacters(in: .whitespaces).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
}
}
}
참고 : 옵션으로 이것을 호출 할 때 사용하지 마십시오. ?
그렇지 않으면 래핑 해제가 필요합니다.
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
무기 호입니다, 그것은 심지어이없는 description
처음에 빈 다움를 확인하기 위해 속성).
isEmpty는 생각대로 문자열 == ""이면 true를 반환합니다. 다른 답변 중 일부는 선택적 문자열이있는 상황을 나타냅니다.
옵션 체인을 사용하십시오 !!!!
문자열이 nil이 아닌 경우 isEmpty가 사용되며 그렇지 않으면 그렇지 않습니다.
아래에서 문자열이 nil이므로 optionalString이 설정되지 않습니다.
let optionalString: String? = nil
if optionalString?.isEmpty == true {
optionalString = "Lorem ipsum dolor sit amet"
}
분명히 위의 코드를 사용하지 않을 것입니다. 이점은 JSON 구문 분석 또는 값이 있거나없는 다른 상황에서 비롯됩니다. 이렇게하면 값이있는 경우 코드가 실행됩니다.
다음과 같이 String 또는 Array에 작은 확장명을 추가하는 것이 좋습니다.
extension Collection {
public var isNotEmpty: Bool {
return !self.isEmpty
}
}
그것으로 당신은 읽기 쉬운 코드를 작성할 수 있습니다. 이 두 줄을 비교
if !someObject.someParam.someSubParam.someString.isEmpty {}
과
if someObject.someParam.someSubParam.someString.isNotEmpty {}
놓치기 쉽다 ! 주먹 줄의 시작 부분에 서명하십시오.