Objective Cでは、次のようにして文字列をチェックできます。
if ([myString isEqualToString:@""]) {
NSLog(@"myString IS empty!");
} else {
NSLog(@"myString IS NOT empty, it is: %@", myString);
}
Swiftで空の文字列を検出するにはどうすればよいですか?
Objective Cでは、次のようにして文字列をチェックできます。
if ([myString isEqualToString:@""]) {
NSLog(@"myString IS empty!");
} else {
NSLog(@"myString IS NOT empty, it is: %@", myString);
}
Swiftで空の文字列を検出するにはどうすればよいですか?
回答:
文字列がnilまたは空かどうかを確認する簡潔な方法は次のとおりです。
var myString: String? = nil
if (myString ?? "").isEmpty {
print("String is nil or empty")
}
if let myString = myString where !myString.isEmpty { ... }
私は完全に私の答えを書き直しています(もう一度)。私はのファンになってきたので、今回はそれがあるguard
の文と早期復帰。それははるかにきれいなコードになります。
長さがゼロかどうかを確認します。
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
文が渡され、その後、あなたは安全にそれが空でないことを知っている文字列を使用することができます。空の場合、関数は早期に戻り、その後は何も戻りません。
nilまたはゼロの長さを確認してください。
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
ので、拡張機能は無意味になります。Swift 4.1。
priority
はそこにオプションがあるためです。ちょうど場合はdescription
、オプションだった、それは動作しますが、あなたは親オブジェクト(場合ので、そのようなオプションであることを回避することはできませんpriority
nilで、それも持っていないdescription
最初の場所に空白ネスをチェックするためにプロパティを)。
isEmptyは、思ったとおりに動作します。string== ""の場合、trueを返します。他の回答のいくつかは、オプションの文字列がある状況を示しています。
オプションのチェーンを使用してください!!!!
文字列がnilでない場合、isEmptyが使用され、それ以外の場合は使用されません。
以下では、文字列がnilであるため、optionalStringは設定されません。
let optionalString: String? = nil
if optionalString?.isEmpty == true {
optionalString = "Lorem ipsum dolor sit amet"
}
もちろん、上記のコードは使用しません。メリットは、JSON解析、または値があるかどうかにかかわらず、そのような状況から得られます。これにより、値がある場合にコードが実行されることが保証されます。
どうですか
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 Collection {
public var isNotEmpty: Bool {
return !self.isEmpty
}
}
これを使用すると、読みやすいコードを記述できます。この2行を比較してください
if !someObject.someParam.someSubParam.someString.isEmpty {}
そして
if someObject.someParam.someSubParam.someString.isNotEmpty {}
見逃しやすいです!最初の行の先頭にサインインします。