ใน 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 ได้อย่างไร
คำตอบ:
ขณะนี้มีความสามารถในการตรวจจับสตริงว่างด้วย.isEmpty
:
if emptyString.isEmpty {
print("Nothing to see here")
}
วิธีรัดกุมเพื่อตรวจสอบว่าสตริงเป็นศูนย์หรือว่างเปล่าจะเป็น:
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
คำสั่งผ่านไปคุณสามารถใช้สตริงได้อย่างปลอดภัยโดยรู้ว่าไม่ว่างเปล่า ถ้ามันว่างเปล่าฟังก์ชั่นจะกลับมาเร็วและไม่มีอะไรหลังจากมันสำคัญ
ตรวจสอบความยาวศูนย์หรือศูนย์
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")
}
นี่คือวิธีที่ฉันตรวจสอบว่าสตริงว่างเปล่า โดย '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
}
}
}
หมายเหตุ: เมื่อโทรหาตัวเลือกนี้ตรวจสอบให้แน่ใจว่าจะไม่ใช้งาน?
มิฉะนั้นจะยังคงต้องเปิดใช้งานอีกครั้ง
optionalString?isBlank
มันจะต้องได้รับการปลด
currentIncident.priority?.description.isBlank
สำหรับฉันนี้ไม่ได้ทำงานกับ พูดว่า: Value of optional type 'Bool?' not unwrapped; did you mean to use '!' or '?'?
. ฉันต้องทำ(currentIncident.priority?.description ?? "").isBlank
ซึ่งทำให้ส่วนขยาย sorta ไม่มีจุดหมาย สวิฟท์ 4.1
priority
ตัวเลือกนั่น ถ้าdescription
เป็นเพียงตัวเลือกมันจะใช้ได้ แต่คุณไม่สามารถแก้ไขวัตถุพาเรนต์ที่เป็นตัวเลือกเช่นนั้นได้ (เพราะถ้าpriority
เป็นศูนย์ดังนั้นมันจึงไม่มีdescription
คุณสมบัติในการตรวจสอบ blank-ness ในตอนแรก)
เพื่อทำการตรวจสอบศูนย์และความยาวพร้อมกัน Swift 2.0 และ iOS 9 เป็นต้นไปคุณสามารถใช้
if(yourString?.characters.count > 0){}
isEmpty จะทำตามที่คุณคิดว่ามันจะเป็นจริงถ้า string == "" มันจะคืนค่าจริง คำตอบอื่น ๆ บางข้อชี้ไปที่สถานการณ์ที่คุณมีสตริงที่เป็นทางเลือก
โปรดใช้การผูกมัดเสริม !!!!
หากสตริงไม่ใช่ศูนย์ isEmpty จะถูกใช้มิฉะนั้นจะไม่มี
ด้านล่างสตริงตัวเลือกจะไม่ถูกตั้งค่าเนื่องจากสตริงเป็นศูนย์
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
}
สำหรับสตริงที่เป็นตัวเลือกวิธีการเกี่ยวกับ:
if let string = string where !string.isEmpty
{
print(string)
}
if myString?.startIndex != myString?.endIndex {}
เกี่ยวกับอะไร
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")
}
ฉันสามารถแนะนำเพิ่มส่วนขยายขนาดเล็กให้กับ String หรือ Array ที่ดูเหมือน
extension Collection {
public var isNotEmpty: Bool {
return !self.isEmpty
}
}
ด้วยคุณสามารถเขียนรหัสที่อ่านง่ายขึ้น เปรียบเทียบสองบรรทัดนี้
if !someObject.someParam.someSubParam.someString.isEmpty {}
และ
if someObject.someParam.someSubParam.someString.isNotEmpty {}
มันง่ายที่จะพลาด! ลงชื่อเข้าใช้ที่จุดเริ่มต้นของบรรทัดกำปั้น
คุณสามารถใช้ส่วนขยายนี้:
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)