यदि उद्देश्य-सी में एक स्ट्रिंग खाली है तो मैं कैसे परीक्षण करूं?


जवाबों:


1156

अगर आप जाँच कर सकते हैं [string length] == 0। यह जाँच करेगा कि क्या यह एक वैध लेकिन खाली स्ट्रिंग (@ "") है और साथ ही साथ यह शून्य है, क्योंकि lengthशून्य पर कॉल करने से भी 0 वापस आ जाएगा।


12
कुछ बहुत ही दुर्लभ NSStrings हैं, जहां यह गलत नकारात्मक परिणाम देगा (यह कहते हुए कि स्ट्रिंग खाली नहीं है, जब व्यावहारिक उद्देश्यों के लिए, यह है)। विचार करें @"\u200B"(केवल यूनिकोड वर्ण ZERO WIDTH SPACE से युक्त) । इसे प्रिंट करना 0 वर्णों को मुद्रित करेगा (मोनोस्पेस फ़ॉन्ट का उपयोग करके सत्यापित करें), लेकिन string.length देगा 1. अन्य यूनिकोड वर्ण (जैसे OBJECT REPLITEMENT CHARACTER ) हैं जो इसी तरह व्यवहार करते हैं। पीडीएफ पाठ पार्स करते समय उत्तरार्द्ध प्राप्त करें।
fzwo

43
@fzwo एक गधा नहीं है, लेकिन सिद्धांत रूप में यह एक झूठी नकारात्मक नहीं देता है। यह वैसा ही व्यवहार करता है जैसा आप अपेक्षा करते हैं। क्या की अपनी व्याख्या ZERO WIDTH SPACEहै नहीं वास्तव में बात है, क्योंकि करता @"\u200B" है एक चरित्र फिर भी, इसलिए यदि आप स्ट्रिंग खाली होने के लिए परीक्षण, यह कहना होगा कि यह का एक पात्र है, क्योंकि वहाँ नहीं है। यह यूनिकोड मानक का अनुसरण करने योग्य नहीं है।
bmeulmeester

2
बेशक यह तकनीकी रूप से सही है, मैं इस पर बहस नहीं कर रहा हूं। मैं बस यह चेतावनी देना चाहता हूं कि यह इच्छित या अपेक्षित व्यवहार को प्रदर्शित नहीं कर सकता है, यही कारण है कि मैंने "व्यावहारिक उद्देश्यों के लिए" लिखा है। यह "खाली" के इच्छित अर्थ पर निर्भर करता है।
fzwo

4
यह गलत नकारात्मक नहीं है। "शून्य वर्थ स्पेस" किसी भी अन्य की तरह एक यूनिकोड वर्ण है। यह सिर्फ "याद रखने लायक" है यदि आपके ऐप के लिए प्रासंगिक है। (महान सोच, fzwo!)
fattie

2
मुझे बताएं कि क्या मैं गलत हूं, लेकिन मुझे लगता है कि आप भी == 0 भाग छोड़ सकते हैं और सामने एक नकार जोड़ सकते हैं ![string length]:। अधिक साफ लगता है।
डेमस्टीरुथीक

126

मार्क का जवाब सही है। लेकिन मैं विल् शिप्पी के सामान्यीकरण के लिए एक सूचक को शामिल करने का यह अवसर लूंगा isEmpty, जिसे उन्होंने अपने ब्लॉग पर साझा किया :

static inline BOOL IsEmpty(id thing) {
return thing == nil
|| ([thing respondsToSelector:@selector(length)]
&& [(NSData *)thing length] == 0)
|| ([thing respondsToSelector:@selector(count)]
&& [(NSArray *)thing count] == 0);
}

26
यदि आप चाहते हैं कि यह बहुत सामान्यीकृत हो, तो कोई इस तर्क को एक स्थिर विधि का उपयोग करने के बजाय NSObject पर एक श्रेणी के रूप में लागू कर सकता है जैसा कि यहां दिखाया गया है।
ब्रैड द ऐप गाय

16
अजीब तरह से, यह वास्तव में [NSNull null] के लिए जाँच नहीं करता है।
पीटर एन लुईस

14
यदि आप ऐसी स्थिति में हैं, जहाँ आप नहीं जानते कि आप किस प्रकार की वस्तु की जाँच कर रहे हैं, तो मुझे लगता है कि यह काम करती है। हालाँकि मेरा सुझाव है कि यदि आप नहीं जानते कि कोई वस्तु NSData या NSArray है, तो आपको बड़ी समस्याएं हैं। इस कॉल, condenseToSingleNSData (id) के बाद आपका अगला मैक्रो क्या होने जा रहा है? ExpandToNSArray (आईडी बात)? जल्दी या बाद में, आप पूछ रहे होंगे कि आप किस तरह की कक्षा के साथ काम कर रहे हैं, इसे पहले संदर्भ में करना बेहतर है।
ब्रैन डे

1
@ ब्रैडस्मिथ, कोई इसके लिए एक श्रेणी बना सकता है, लेकिन शून्य मानों की गणना नहीं की जाएगी क्योंकि विधि को नहीं कहा जाएगा। उदाहरण के लिए, अगर बात = nil, [बात IsEmpty] नहीं कहलाती और हमेशा झूठी / NO नहीं लौटती। नील की जांच के लिए, एक पैरामीटर होना चाहिए। निल वस्तुएं किसी श्रेणी के माध्यम से खुद की तुलना नहीं कर सकती हैं।
क्रिस

3
@chris तब आप श्रेणी विधि को बदल सकते हैं -isNotEmpty:)
nielsbot

93

पहला दृष्टिकोण मान्य है, लेकिन अगर आपके स्ट्रिंग में रिक्त स्थान ( @" ") नहीं है तो यह काम नहीं करता है । इसलिए आपको इसे जांचने से पहले इस सफेद रिक्त स्थान को साफ करना चाहिए।

यह कोड स्ट्रिंग के दोनों तरफ के सभी रिक्त स्थानों को साफ़ करता है:

[stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ];

एक अच्छा विचार एक मैक्रो का निर्माण करता है, इसलिए आपको यह राक्षस लाइन टाइप करने की आवश्यकता नहीं है:

#define allTrim( object ) [object stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ]

अब आप उपयोग कर सकते हैं:

NSString *emptyString = @"   ";

if ( [allTrim( emptyString ) length] == 0 ) NSLog(@"Is empty!");

3
जब वे आवश्यक नहीं हैं तो मैक्रोज़ का उपयोग क्यों करें? इस मामले में बिना किसी वास्तविक लाभ के लिए किसी भी प्रकार की सुरक्षा का त्याग किया जाता है।
EM

सरल सुविधा के लिए है, अगर आप लिखना पसंद करते हैं "[ऑब्जेक्ट stringObject stringByTrimmingCharactersInSet: [NSCharacterSet व्हाट्सएपसेचरचेचरसेट]]" हर बार अगर आप चेक करना चाहते हैं कि क्या आपका स्ट्रिंग खाली है, तो आप पर निर्भर है।
SEQOY डेवलपमेंट टीम

18
यह बेहतर होगा कि एक NSStringश्रेणी द्वारा सेवा की जाए जो कि एक विधि कहलाए, trimmedStringजो वास्तव में आपने लिखी है।
डेव डोंगलांग

2
ध्यान दें कि Apple whitespaceCharacterSetमें नईलाइन शामिल नहीं हैं! यहां मैंने एक श्रेणी दी है जिसमें मैंने लिखा है trimऔर कुछ अन्य उपयोगी विधियाँ: github.com/alexch/unsuck/blob/master/unsuck/NSString%2Bnsuck.m github.com/alexch/unsuck/blob/master/unsuckTests/…
एलेक्साचेफी

@ मैं मैक्रों का प्रशंसक नहीं हूं, लेकिन मैं आपके प्रकार-सुरक्षा की चिंता को नहीं समझता। संकलन के दौरान मैक्रो को इसकी सामग्री से बदल दिया जाता है, इसलिए यदि आप मैक्रो को NSString से कुछ अलग के साथ आह्वान करते हैं तो भी आपको कंपाइलर से एक संदेश मिलता है। श्रेणियाँ वैसे भी बेहतर होंगी।
Zmaster

32

सबसे अच्छा समाधान में से एक जो मैंने कभी देखा (मैट जी के एक से बेहतर) यह बेहतर इनलाइन फ़ंक्शन है जिसे मैंने कुछ जीआईटी हब रेपो (विली शिपली के एक पर उठाया है, लेकिन मुझे लिंक नहीं मिल सकता है):

// Check if the "thing" passed is empty
static inline BOOL isEmpty(id thing) {
    return thing == nil
    || [thing isKindOfClass:[NSNull class]]
    || ([thing respondsToSelector:@selector(length)]
        && [(NSData *)thing length] == 0)
    || ([thing respondsToSelector:@selector(count)]
        && [(NSArray *)thing count] == 0);
}

2
यह Wil Shipley का काम है। FYI करें, आप बदल सकते हैं [बात .KindOfClass: [NSNull वर्ग]] को सिर्फ (बात == [NSNull null])
स्टीव एन

काहे .... बिल्कुल वही जिसकी मुझे तलाश थी। मैं पागल हो रहा था, काम करने की कोशिश कर रहा था कि क्यों मेरा "सेलफ़ोररौटइंडेक्सपैथ" फ़ंक्शन अशक्त तारों के कारण दुर्घटनाग्रस्त हो रहा था (और मैं समस्या को पकड़ नहीं सका)। इस फ़ंक्शन ने इसे पूरी तरह से हल किया।
माइक गल्डहिल

@ क्रेन टिप्पणी की प्रतिलिपि: यदि आप ऐसी स्थिति में हैं, जहां आपको नहीं पता है कि आप किस प्रकार की वस्तु की जांच कर रहे हैं, तो मुझे लगता है कि यह काम करता है। हालाँकि मेरा सुझाव है कि यदि आप नहीं जानते कि कोई वस्तु NSData या NSArray है, तो आपको बड़ी समस्याएं हैं। अपने अगले मैक्रो इस कॉल के बाद होने जा रहा, क्या है condenseToSingleNSData(id thing)? expandToNSArray(id thing)? जल्दी या बाद में, आप पूछ रहे होंगे कि आप किस तरह की कक्षा के साथ काम कर रहे हैं, पहले संदर्भ में इसे करना बेहतर है।
कूर

16

आपको इस श्रेणी का बेहतर उपयोग करना चाहिए:

@implementation NSString (Empty)

    - (BOOL) isWhitespace{
        return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]length] == 0);
    }

@end

6
यह परिभाषा मानती है कि स्ट्रिंग "/ r / n / r / n" खाली है, जब यह स्पष्ट रूप से नहीं है - इसमें व्हाट्सएप शामिल है। आपका कार्य वास्तव में है: - (BOOL) isWhitespace (NSString *);
JBRWilkinson

6
इसके लिए एक कोरोलरी। मैंने इस श्रेणी को लागू किया है, और एक मोड़ है। यदि आप इसे शून्य स्ट्रिंग पर कॉल करते हैं, तो यह फ़ंक्शन कभी नहीं कहा जाता है, और आपको रिटर्न मान के रूप में कोई NO (या क्या NO का मूल्यांकन करता है) वापस मिलता है। फिर आपको लगता है कि यह खाली नहीं है ... यह काम हो सकता है यदि नाम को पूरा किया गया है या ऐसा कुछ है।
यिंग

मुझे लगता है कि सही श्रेणी तब होगी: @implementation NSString (Empty) - (BOOL) empty{ return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]length] == 0); } @end मार्क के और काइल के उत्तर के संयोजन के रूप में।
पाल्मे

12

मैंने इसे रखा:

@implementation NSObject (AdditionalMethod)
-(BOOL) isNotEmpty
{
    return !(self == nil
    || [self isKindOfClass:[NSNull class]]
    || ([self respondsToSelector:@selector(length)]
        && [(NSData *)self length] == 0)
    || ([self respondsToSelector:@selector(count)]
        && [(NSArray *)self count] == 0));

};
@end

समस्या यह है कि यदि आत्म शून्य है, तो यह फ़ंक्शन कभी नहीं कहा जाता है। यह गलत है, जो वांछित है वापस आ जाएगा।


सर्वोत्तम समाधान चूंकि a) इंस्टेंस विधि है और b) श्रेणी c) स्वयं पर nil केस 'isNotEmpty' Thx द्वारा हैंडल किया जाता है!
डेनिस

महान विचार, बस बहुत बुरा -(BOOL)isEmpty{ return ![self isNotEmpty]}श्रेणी पर काम नहीं करेगा।
एलस्टन

@ क्रेन टिप्पणी की प्रतिलिपि: यदि आप ऐसी स्थिति में हैं, जहां आपको नहीं पता है कि आप किस प्रकार की वस्तु की जांच कर रहे हैं, तो मुझे लगता है कि यह काम करता है। हालाँकि मेरा सुझाव है कि यदि आप नहीं जानते कि कोई वस्तु NSData या NSArray है, तो आपको बड़ी समस्याएं हैं। अपने अगले मैक्रो इस कॉल के बाद होने जा रहा, क्या है condenseToSingleNSData(id thing)? expandToNSArray(id thing)? जल्दी या बाद में, आप पूछ रहे होंगे कि आप किस तरह की कक्षा के साथ काम कर रहे हैं, पहले संदर्भ में इसे करना बेहतर है।
कूर

11

अगर यह के बराबर है एक और विकल्प की जांच करने के लिए है @""के साथ isEqualToString:इतना की तरह:

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

11

बस अपनी स्ट्रिंग निम्न विधि से पास करें:

+(BOOL)isEmpty:(NSString *)str
{
    if(str.length==0 || [str isKindOfClass:[NSNull class]] || [str isEqualToString:@""]||[str  isEqualToString:NULL]||[str isEqualToString:@"(null)"]||str==nil || [str isEqualToString:@"<null>"]){
        return YES;
    }
    return NO;
}

इस गलत क्यों है stackoverflow.com/questions/21605075/… पर टिप्पणियों की जाँच करें । इसके अलावा यह कैसे बेहतर है तो अन्य जवाब यहाँ पर।
Popeye

6

if elseनीचे दी गई शर्तों में से एक का उपयोग करें:

विधि 1:

if ([yourString isEqualToString:@""]) {
        // yourString is empty.
    } else {
        // yourString has some text on it.
    }

विधि 2:

if ([yourString length] == 0) {
    // Empty yourString
} else {
    // yourString is not empty
}

6

स्विफ्ट संस्करण

हालांकि यह एक ऑब्जेक्टिव सी प्रश्न है, मुझे NSStringस्विफ्ट में उपयोग करने की आवश्यकता है इसलिए मैं यहां एक उत्तर भी शामिल करूंगा।

let myNSString: NSString = ""

if myNSString.length == 0 {
    print("String is empty.")
}

या यदि NSStringएक वैकल्पिक है:

var myOptionalNSString: NSString? = nil

if myOptionalNSString == nil || myOptionalNSString!.length == 0 {
    print("String is empty.")
}

// or alternatively...
if let myString = myOptionalNSString {
    if myString.length != 0 {
        print("String is not empty.")
    }
}

सामान्य स्विफ्ट Stringसंस्करण है

let myString: String = ""

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

इसे भी देखें: स्विफ्ट में खाली स्ट्रिंग की जाँच करें?


5

हो सकता है कि यह उत्तर पहले से दिए गए उत्तरों की डुप्लिकेट हो, लेकिन मैंने शर्तों की जाँच के क्रम में कुछ संशोधन और बदलाव किए। कृपया निम्न कोड देखें:

+(BOOL)isStringEmpty:(NSString *)str
    {
        if(str == nil || [str isKindOfClass:[NSNull class]] || str.length==0) {
            return YES;
       }
        return NO;
    }

यह एक वर्ग है, तो आप इसे यहां इसे बनाना सीखें देख सकते हैं: goo.gl/bRcfn7 । मुझे इसके लिए एक श्रेणी का विचार पसंद है
डैनियल गोमेज़ रिको

नहीं, हम यह नहीं कह सकते कि यह श्रेणी है। यदि यह फ़ंक्शन NSString वर्ग की श्रेणी के तहत लागू किया जाता है, तो यह श्रेणी है। अन्यथा हम इस पद्धति को वर्ग के नाम से पुकार सकते हैं जहाँ हमने इसे लागू किया है। जैसे बूल isEmptyStr = [MyClassName isStringEmpty: str] लेकिन फिर भी, यह अधिक अच्छा होगा यदि हम इसे श्रेणी के तहत घोषित करेंगे। क्योंकि किसी तरह हमें श्रेणियों का भी लाभ उठाने की आवश्यकता है।

4

आप इस विधि का उपयोग करके या तो यह जांच सकते हैं कि आपका तार खाली है या नहीं

+(BOOL) isEmptyString : (NSString *)string
{
    if([string length] == 0 || [string isKindOfClass:[NSNull class]] || 
       [string isEqualToString:@""]||[string  isEqualToString:NULL]  ||
       string == nil)
     {
        return YES;         //IF String Is An Empty String
     }
    return NO;
}

सबसे अच्छा अभ्यास यह है कि आप एक साझा वर्ग को यूटिलिटीक्लास कहें और इस विधि को एड करें ताकि आप इस पद्धति का उपयोग केवल अपने आवेदन के माध्यम से कॉल करके कर सकें।


4

आपके पास यह जांचने के लिए 2 तरीके हैं कि स्ट्रिंग खाली है या नहीं:

मान लीजिए कि आपका स्ट्रिंग नाम है NSString *strIsEmpty

विधि 1:

if(strIsEmpty.length==0)
{
    //String is empty
}

else
{
    //String is not empty
}

विधि 2:

if([strIsEmpty isEqualToString:@""])
{
    //String is empty
}

else
{
    //String is not empty
}

उपरोक्त विधि में से कोई भी चुनें और यह जान लें कि स्ट्रिंग खाली है या नहीं।


3

बस अपनी स्ट्रिंग लंबाई की जाँच करें

 if (!yourString.length)
 {
   //your code  
 }

NIL को एक संदेश nil या 0 लौटाएगा, इसलिए nil के लिए परीक्षण करने की कोई आवश्यकता नहीं है :)।

हैप्पी कोडिंग ...


मैंने कई बार इसका इस्तेमाल किया है। एक्सटेंशन, श्रेणियों और क्या नहीं के लिए बिल्कुल कोई ज़रूरत नहीं है।
pnizzle

2

यह मेरे लिए आकर्षण का काम कर रहा है

अगर NSStringहैs

if ([s isKindOfClass:[NSNull class]] || s == nil || [s isEqualToString:@""]) {

    NSLog(@"s is empty");

} else {

    NSLog(@"s containing %@", s);

}

2

तो 1 से कम एक स्ट्रिंग लंबाई के लिए जाँच की मूल अवधारणा से अलग, संदर्भ पर गहराई से विचार करना महत्वपूर्ण है। भाषा मानव या कंप्यूटर या अन्यथा खाली स्ट्रिंग की अलग-अलग परिभाषा हो सकती है और उन्हीं भाषाओं के भीतर, अतिरिक्त संदर्भ अर्थ बदल सकते हैं।

मान लें कि रिक्त स्ट्रिंग का अर्थ है "एक स्ट्रिंग जिसमें वर्तमान संदर्भ में कोई भी अक्षर महत्वपूर्ण नहीं है"।

इसका मतलब नेत्रहीन हो सकता है, जैसा कि रंग और पृष्ठभूमि रंग एक जिम्मेदार स्ट्रिंग में समान हैं। प्रभावी रूप से खाली।

यह सार्थक पात्रों के खाली होने का अर्थ हो सकता है। सभी बिंदु या सभी डैश या सभी अंडरस्कोर रिक्त माने जा सकते हैं। इसके अलावा, सार्थक महत्वपूर्ण पात्रों के खाली होने का मतलब यह हो सकता है कि पाठक को समझने वाला कोई भी अक्षर न हो। वे एक भाषा या चरित्र में वर्ण हो सकते हैं जो पाठक के लिए अर्थहीन के रूप में परिभाषित किया जाता है। हम इसे कुछ अलग तरीके से कह सकते हैं कि स्ट्रिंग किसी दिए गए भाषा में कोई ज्ञात शब्द नहीं है।

हम कह सकते हैं कि खाली ग्लाइफ्स में नकारात्मक स्थान के प्रतिशत का एक कार्य है।

यहां तक ​​कि बिना सामान्य दृश्य प्रतिनिधित्व वाले गैर प्रिंट करने योग्य पात्रों का एक क्रम वास्तव में खाली नहीं है। नियंत्रण पात्रों के मन में आते हैं। विशेष रूप से कम ASCII रेंज (मुझे आश्चर्य है कि किसी ने भी उनका उल्लेख नहीं किया है क्योंकि वे बहुत सारे सिस्टम को नली देते हैं और वे व्हाट्सएप नहीं हैं क्योंकि उनके पास आमतौर पर कोई ग्लिफ़ नहीं है और कोई दृश्य मैट्रिक्स नहीं है)। फिर भी स्ट्रिंग की लंबाई शून्य नहीं है।

निष्कर्ष। यहां लंबाई ही एकमात्र उपाय नहीं है। प्रासंगिक सेट सदस्यता भी बहुत महत्वपूर्ण है।

चरित्र सेट सदस्यता एक बहुत ही महत्वपूर्ण सामान्य अतिरिक्त उपाय है। सार्थक क्रम भी काफी सामान्य हैं। (थिंक SETI या क्रिप्टो या कैप्चा) अतिरिक्त अधिक सार संदर्भ सेट भी मौजूद हैं।

इसलिए यह सोचकर ध्यान रखें कि एक स्ट्रिंग केवल लंबाई या व्हाट्सएप के आधार पर खाली है।


2

NS सहारे को जोड़ने के लिए बहुत उपयोगी पोस्ट, साथ ही एक छोटा सा परिवर्तन

static inline BOOL isEmpty(id thing) {
    return thing == nil
    || [thing isKindOfClass:[NSNull class]]
    || ([thing respondsToSelector:@selector(length)]
        && ![thing respondsToSelector:@selector(count)]
        && [(NSData *)thing length] == 0)
    || ([thing respondsToSelector:@selector(count)]
        && [thing count] == 0);
}

@ क्रेन टिप्पणी की प्रतिलिपि: यदि आप ऐसी स्थिति में हैं, जहां आपको नहीं पता है कि आप किस प्रकार की वस्तु की जांच कर रहे हैं, तो मुझे लगता है कि यह काम करता है। हालाँकि मेरा सुझाव है कि यदि आप नहीं जानते कि कोई वस्तु NSData है या NSDictionary, तो आपको बड़ी समस्याएं हैं। अपने अगले मैक्रो इस कॉल के बाद होने जा रहा, क्या है condenseToSingleNSData(id thing)? expandToNSArray(id thing)? जल्दी या बाद में, आप पूछ रहे होंगे कि आप किस तरह की कक्षा के साथ काम कर रहे हैं, पहले संदर्भ में इसे करना बेहतर है।
कॉर

2
- (BOOL)isEmpty:(NSString *)string{
    if ((NSNull *) string == [NSNull null]) {
        return YES;
    }
    if (string == nil) {
        return YES;
    }
    if ([string length] == 0) {
        return YES;
    }
    if ([[string stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0) {
        return YES;
    }
    if([[string stringByStrippingWhitespace] isEqualToString:@""]){
        return YES;
    }
    return NO;
}

1
पहले तीन शर्तों निरर्थक हैं, और आप के लिए स्रोत शामिल नहीं किया हैstringByStrippingWhitespace
mattsven

2

सबसे अच्छा तरीका श्रेणी का उपयोग करना है।
आप निम्न फ़ंक्शन की जाँच कर सकते हैं। जिसकी जांच करने के लिए सभी शर्तें हैं।

-(BOOL)isNullString:(NSString *)aStr{
        if([(NSNull *)aStr isKindOfClass:[NSNull class]]){
            return YES;
        }
        if ((NSNull *)aStr  == [NSNull null]) {
            return YES;
        }
        if ([aStr isKindOfClass:[NSNull class]]){
            return YES;
        }
        if(![[aStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length]){
            return YES;
        }
        return NO;
    }

1

किसी भी मामले में सबसे अच्छा तरीका है कि दिए गए स्ट्रिंग की लंबाई की जाँच करें। इसके लिए यदि आपका स्ट्रिंग myString है तो कोड है:

    int len = [myString length];
    if(len == 0){
       NSLog(@"String is empty");
    }
    else{
      NSLog(@"String is : %@", myString);
    }


1

इसे देखो :

if ([yourString isEqualToString:@""])
{
    NsLog(@"Blank String");
}

या

if ([yourString length] == 0)
{
    NsLog(@"Blank String");
}

आशा है कि यह मदद करेगा।


1

यदि स्ट्रिंग इसके साथ खाली है तो आप आसानी से देख सकते हैं:

if ([yourstring isEqualToString:@""]) {
    // execute your action here if string is empty
}

1

मैंने नीचे दिए गए कोड का उपयोग करके एक खाली स्ट्रिंग की जाँच की है:

//Check if we have any search terms in the search dictionary.
if( (strMyString.text==(id) [NSNull null] || [strMyString.text length]==0 
       || strMyString.text isEqual:@"")) {

   [AlertView showAlert:@"Please enter a valid string"];  
}


1
//Different validations:
 NSString * inputStr = @"Hey ";

//Check length
[inputStr length]

//Coming from server, check if its NSNull
[inputStr isEqual:[NSNull null]] ? nil : inputStr

//For validation in allowed character set
-(BOOL)validateString:(NSString*)inputStr
{
    BOOL isValid = NO;
    if(!([inputStr length]>0))
    {
        return isValid;

    }

    NSMutableCharacterSet *allowedSet = [NSMutableCharacterSet characterSetWithCharactersInString:@".-"];
    [allowedSet formUnionWithCharacterSet:[NSCharacterSet decimalDigitCharacterSet]];
    if ([inputStr rangeOfCharacterFromSet:[allowedSet invertedSet]].location == NSNotFound)
    {
        // contains only decimal set and '-' and '.'

    }
    else
    {
        // invalid
        isValid = NO;

    }
    return isValid;
}

0

आपके पास दो तरह से खाली स्ट्रिंग हो सकती है:

1) @ "" // में स्थान नहीं है

2) @ "" // कंटेनर स्पेस

तकनीकी रूप से दोनों तार खाली हैं। हम केवल एक शर्त का उपयोग करके दोनों बातें लिख सकते हैं

if ([firstNameTF.text stringByReplacingOccurrencesOfString:@" " withString:@""].length==0)
{
    NSLog(@"Empty String");
}
else
{
    NSLog(@"String contains some value");
}

0

निम्नलिखित प्रयास करें

NSString *stringToCheck = @"";

if ([stringToCheck isEqualToString:@""])
{
   NSLog(@"String Empty");
}
else
{
   NSLog(@"String Not Empty");
}

-1
if(str.length == 0 || [str isKindOfClass: [NSNull class]]){
    NSLog(@"String is empty");
}
else{
    NSLog(@"String is not empty");
}    

1
अशक्त जाँच पहले होनी चाहिए। str.lengthएक अपवाद है अगर strअशक्त है।
जेफरी थॉमस

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.