সুইফটে খালি স্ট্রিং পরীক্ষা করে দেখুন?


165

অবজেক্টিভ সি-তে, স্ট্রিংগুলি যাচাইয়ের জন্য নিম্নলিখিতগুলি করতে পারে:

if ([myString isEqualToString:@""]) {
    NSLog(@"myString IS empty!");
} else {
    NSLog(@"myString IS NOT empty, it is: %@", myString);
}

কীভাবে একজন সুইফটে খালি স্ট্রিং সনাক্ত করতে পারে?


3
আপনার উদ্দেশ্য কোডটি ভুল। এটি নীল স্ট্রিংগুলির জন্য খারাপভাবে ব্যর্থ হয়। উদ্দেশ্য সিতে আসলে ব্যবহার করা হয়: যদি (মাই স্ট্রিং. দৈর্ঘ্য) {'এর দৈর্ঘ্যের একটি স্ট্রিং} এটি নীল স্ট্রিংগুলিতেও কাজ করে। এটি সহজ এবং পড়া সহজ।
টম অ্যান্ডারসন

উত্তর:


240

খালি স্ট্রিং সনাক্ত করার ক্ষমতা এখন এখানে রয়েছে .isEmpty:

if emptyString.isEmpty {
    print("Nothing to see here")
}

অ্যাপল প্রাক-প্রকাশের ডকুমেন্টেশন: "স্ট্রিংস এবং চরিত্রগুলি"


1
আপনি ইক্যুয়েল টুস্ট্রিংও ব্যবহার করতে পারেন, যা আপনি এনএসএসটিংয়ের সাথে ভেরি (আর 'ফাঁকা স্ট্রিং: এনএসএসটিং') শুরু করে দিলে কাজে আসবে: খালি স্ট্রিং.ইসকোয়ালট্রস্ট্রিং ("")
সেভেন

1
এই শর্তটি ব্যর্থ হয় যখন ব্যবহারকারী স্পেসে প্রবেশ করে।
শানু সিং

আপডেট: এখানে ইম্পটি: বিকাশকারী.অ্যাপল.
2946268

108

স্ট্রিংটি শূন্য বা খালি কিনা তা যাচাই করার জন্য একটি সংক্ষিপ্ত উপায়:

var myString: String? = nil

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

এটি সুন্দর, তবে আপনি কীভাবে মোড়কযুক্ত মানটি ব্যবহার করবেন? জোর করে মোড়ক?
নস্টালজি.ইও

5
@ শ্যালফনিবল আপনি হয় করতে পারেন (অন্তর্নিহিত বা জোর করে আনপ্রেট) বা আপনি করতে পারেন:if let myString = myString where !myString.isEmpty { ... }
অ্যালবার্ট বোরি

52

আমি আমার উত্তরটি পুরোপুরি আবার লিখছি ( আবার )। এবার কারণ আমি guardবিবৃতি এবং প্রথম দিকে ফিরে আসার ভক্ত হয়েছি । এটি অনেক ক্লিনার কোড তৈরি করে।

অ-ptionচ্ছিক স্ট্রিং

শূন্য দৈর্ঘ্যের জন্য পরীক্ষা করুন।

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বিবৃতিটি পাস হয়, তবে আপনি স্ট্রিংটি খালি নেই তা জেনে নিরাপদে ব্যবহার করতে পারেন। যদি এটি খালি থাকে তবে ফাংশনটি তাড়াতাড়ি ফিরে আসবে এবং তার পরে গুরুত্বপূর্ণ কিছু নয়।

Ptionচ্ছিক স্ট্রিং

শূন্য বা শূন্য দৈর্ঘ্যের জন্য পরীক্ষা করুন।

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)

এটি alচ্ছিকভাবে মোড়ক দেয় এবং এটি একই সাথে খালি নয় তা পরীক্ষা করে। guardবিবৃতিটি পাস করার পরে , আপনি নিরাপদে আপনার মোড়কে থাকা মোড়ক ছাড়াই স্ট্রিং ব্যবহার করতে পারেন।


40

এক্সকোডে 11.3 সুইফ্ট 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")
}

2
আপনার উত্তর এবং ব্যতীত একটি মধ্যে পার্থক্য আছে?
আহমদ এফ

যদি ব্যবহারকারী কেবল একগুচ্ছ জায়গাগুলি প্রবেশ করে তবে এটি কাজ করে না।
সুপারটেকনোবফ

2
টাইপোগ্রাফিতে সাদা স্থানগুলিকে একটি চরিত্র হিসাবে বিবেচনা করা হয় তাই এটি খালি নয়। আপনি যদি চান তবে শর্তটি 'lang.trimmingCharacters (in:। Whitespaces) এ পরিবর্তন করুন isEmpty'
সরঞ্জিথ

28

স্ট্রিং ফাঁকা আছে কিনা তা আমি এখানে যাচ্ছি। 'ফাঁকা' বলতে আমার বোঝায় এমন একটি স্ট্রিং যা হয় খালি হয় বা এতে কেবল স্থান / নিউলাইন অক্ষর থাকে।

struct MyString {
  static func blank(text: String) -> Bool {
    let trimmed = text.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
    return trimmed.isEmpty
  }
}

ব্যবহারবিধি:

MyString.blank(" ") // true

7
এবং একটি এক্সটেনশন হিসাবে ... gist.github.com/danielgomezrico/f852114508c1cfaaa849
ড্যানিয়েল গোমেজ রিকো

2
সংযোজন হিসাবে, আপনি কেবল শ্বেত স্পেসের পরিবর্তে হোয়াইটস্পেসএন্ড নিউলাইনচার্যাকারসেট ব্যবহার করতে পারেন।
fwelstra

1
ধন্যবাদ @ ফুইয়েলস্ট্রা, নতুন লাইন উপেক্ষা করাও খুব কার্যকর হবে useful
এভেজেনি

14

আপনি একটি alচ্ছিক এক্সটেনশনও ব্যবহার করতে পারেন যাতে আপনার মোড়ানো বা ব্যবহার সম্পর্কে চিন্তা করতে হবে না == 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
        }
    }
}

দ্রষ্টব্য: an ?চ্ছিক এটিকে কল করার সময়, ব্যবহার না করার বিষয়টি নিশ্চিত করুন বা অন্যথায় এটি এখনও মোড়কানোর প্রয়োজন হবে না।


1
এটি সম্পর্কে উত্তেজিত হয়ে
উঠেছে

@ ট্রেডাইল "কাজ করেননি" এর অর্থ কি আপনি বোঝাচ্ছেন যে আপনি একটি ত্রুটি পেয়ে যাচ্ছেন, স্বতঃপূরণ বা অন্য কিছু নিয়ে সমস্যা আছে? এমন কিছু পরিবর্তন না করা উচিত যা আমি সচেতন নই, তবে স্বতঃপূরণ সর্বদা সঠিক সংস্করণটি বেছে নেবে না।
জন মন্টগোমেরি

আমি এখনও একটি সংকলন-সময় ত্রুটি পেয়েছি যখন আমি optionalString?isBlankএটি ব্যবহার করার চেষ্টা করি যে এটি মোড়ানো উচিত।
teradyl

1
আমার জন্য, এটি কাজ করছে না currentIncident.priority?.description.isBlank। বলেছেন: Value of optional type 'Bool?' not unwrapped; did you mean to use '!' or '?'?। আমাকে এটি করতে হবে (currentIncident.priority?.description ?? "").isBlankযা এক্সটেনশানগুলিকে ধরণের অর্থহীন করে তোলে। সুইফট 4.1।
কার্স্টেন হেগম্যান

1
পছন্দ করেছেন @ কার্স্টেনহেজম্যান কারণ priorityএটি সেখানে alচ্ছিক । যদি কেবল descriptionalচ্ছিক হয় তবে এটি কাজ করবে তবে আপনি কোনও প্যারেন্ট অবজেক্টের মতো optionচ্ছিক হয়ে কাজ করতে পারবেন না (কারণ যদি priorityতা শূন্য হয়, তবে এটির descriptionজন্য প্রথমে ফাঁকা-নেস চেক করার কোনও সম্পত্তিও নেই)।
জন মন্টগোমেরি

9

নীল চেক এবং দৈর্ঘ্য একই সাথে করতে আপনি সুইফট ২.০ এবং আইওএস 9 এর পরে ব্যবহার করতে পারেন

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

4

ইস্পটি আপনি যা ভাবেন ঠিক তেমনই করবে, যদি স্ট্রিং == "" হয়, তবে এটি সত্য হয়ে যাবে। অন্যান্য উত্তরগুলির মধ্যে কয়েকটি এমন পরিস্থিতিতে ইঙ্গিত করে যেখানে আপনার anচ্ছিক স্ট্রিং রয়েছে।

LE চ্ছিক চেইন ব্যবহার করুন দয়া করে !!!!

যদি স্ট্রিংটি শূন্য না হয়, তবে ইম্পটি ব্যবহার করা হবে, অন্যথায় এটি ব্যবহার করবে না।

নীচে, alচ্ছিক স্ট্রিং সেট করা হবে না কারণ স্ট্রিং শূন্য

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

স্পষ্টতই আপনি উপরের কোডটি ব্যবহার করবেন না। লাভগুলি JSON পার্সিং বা অন্যান্য জাতীয় পরিস্থিতি থেকে আসে যেখানে আপনার হয় মূল্য আছে বা নেই। যদি কোনও মান থাকে তবে এই গ্যারান্টি কোডটি চালানো হবে।


2

পাঠ্যে কেবলমাত্র ফাঁকা স্থান এবং নতুন লাইনের অক্ষরের জন্য চেক করুন

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

ব্যবহার

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

1

Aboutচ্ছিক স্ট্রিংগুলির জন্য কীভাবে:

if let string = string where !string.isEmpty
{
    print(string)
}


0

কি সম্পর্কে

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

0

আমি স্ট্রিং বা অ্যারের মতো দেখতে ছোট এক্সটেনশন যুক্ত করার পরামর্শ দিতে পারি

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

এটির সাহায্যে আপনি এমন কোড লিখতে পারেন যা পড়া সহজ। এই দুটি লাইন তুলনা করুন

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

এবং

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

এটা মিস করা সহজ ! মুষ্টি রেখার শুরুতে সাইন ইন করুন।


0

আপনি এই এক্সটেনশনটি ব্যবহার করতে পারেন:

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)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.