উদ্দেশ্য-সি-তে কোনও স্ট্রিং ফাঁকা থাকলে আমি কীভাবে পরীক্ষা করব?


উত্তর:


1156

আপনি যদি পরীক্ষা করতে পারেন [string length] == 0। এটি যদি বৈধ তবে ফাঁকা স্ট্রিং (@ "") পাশাপাশি এটি শূন্য হয় কিনা তা পরীক্ষা lengthকরে দেখাবে , যেহেতু শূন্যপানে কল করাও 0 ফিরে আসবে।


12
কিছু খুব বিরল এনএসএসআরটিং রয়েছে যেখানে এর ফলস্বরূপ মিথ্যা নেতিবাচক ফলাফল আসবে (বলছে স্ট্রিংটি খালি নেই, যখন ব্যবহারিক উদ্দেশ্যে, এটি হয়)। বিবেচনা করুন @"\u200B"(শুধুমাত্র ইউনিকোড অক্ষর নিয়ে গঠিত শূন্য প্রস্থের স্পেস । এটা ছাপানোর আউট 0 অক্ষর (Monospaced ফন্ট) ব্যবহার করে যাচাই হয়ে গেলে, কিন্তু string.length 1. দেব অন্যান্য ইউনিকোড অক্ষর (যেমন আছে প্রিন্ট হবে অবজেক্ট REPLACEMENT চরিত্র হতে পারে) যা একইভাবে আচরণ। আপনি পিডিএফ পাঠ্য বিশ্লেষণ করার পরে পরবর্তীটি পান
fzw

43
@fzwo একটি গাধা হতে না, কিন্তু তাত্ত্বিকভাবে এটি একটি মিথ্যা নেতিবাচক দেয় না। এটি আপনার প্রত্যাশা মতো ঠিক আচরণ করে । আপনার যা ZERO WIDTH SPACEযা বোঝায় তা আসলেই গুরুত্বপূর্ণ নয়, তবে @"\u200B" এটি একটি চরিত্র তবে তবুও যদি আপনি স্ট্রিংটি খালি রাখার জন্য পরীক্ষা করেন তবে এটি বলবে যে এটিতে কোনও চরিত্র থাকার কারণে এটি তা নয়। এটি কেবল ইউনিকোড স্ট্যান্ডার্ড অনুসরণ করে মুদ্রণযোগ্য নয়।
bmeulmeester

2
অবশ্যই এটি প্রযুক্তিগতভাবে সঠিক, আমি এটি নিয়ে বিতর্ক করছি না। আমি কেবল সতর্ক করতে চাই যে এটি উদ্দেশ্যমূলক বা প্রত্যাশিত আচরণ প্রদর্শন করতে না পারে, এজন্যই আমি "ব্যবহারিক উদ্দেশ্যে" লিখেছিলাম। এটি "খালি" এর উদ্দেশ্যযুক্ত অর্থের উপর নির্ভর করে।
fzwo

4
এটি একটি মিথ্যা নেতিবাচক নয়। একটি "শূন্য মূল্যের স্থান" হ'ল অন্য যেকোন একটি ইউনিকোড চরিত্র। আপনার অ্যাপ্লিকেশনের সাথে সম্পর্কিত হলে এটি কেবল "স্মরণে রাখার মতো"। (গ্রেট চিন্তা, fzwo!)
Fattie

2
আমাকে যদি আমি ভুল, কিন্তু আমি মনে করি আপনি পারা এছাড়াও ফেরত == 0 অংশ এবং সামনে একটি অস্বীকৃতি যোগ করুন: ![string length]। আরও পরিষ্কার মনে হচ্ছে।
dimarrstuhec

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
আপনি যদি এটি খুব সাধারণীকরণ করতে চান তবে কেউ এখানে যুক্ত হিসাবে স্থির পদ্ধতি ব্যবহার না করে এনএসবজেক্টে বিভাগ হিসাবে এই যুক্তিকে প্রয়োগ করতে পারে।
ব্র্যাড দ্য অ্যাপ গাই

16
অদ্ভুতভাবে, এটি আসলে [এনএসএন নাল] পরীক্ষা করে না।
পিটার এন লুইস

14
আপনি যদি এমন পরিস্থিতিতে থাকেন যেখানে আপনি জানেন না আপনি কোন ধরণের অবজেক্টটি চেক করছেন, আমি অনুমান করি এটি কাজ করে। তবে আমি প্রস্তাব দিচ্ছি যে আপনি যদি কোনও জিনিস NSData বা NSArray কিনা জানেন না তবে আপনার আরও বড় সমস্যা রয়েছে। এই কলটির পরে আপনার পরবর্তী ম্যাক্রোটি কী হতে চলেছে, কনডেন্সটসসিংলএনএসটাটা (আইডি জিনিস)? প্রসারিত টোএনএসআরাই (আইডি জিনিস)? যত তাড়াতাড়ি বা পরে, আপনি জিজ্ঞাসা করবেন আপনি কোন ধরণের শ্রেণীর সাথে কাজ করছেন, এটি প্রথম রেফারেন্সে করা আরও ভাল।
ব্রেন

1
@ ব্র্যাডস্মিথ, এটির জন্য একটি বিভাগ তৈরি করতে পারে তবে পদ্ধতিটি বলা হবে না বলে শূন্য মানগুলি গণনা করা হবে না। উদাহরণস্বরূপ, যদি জিনিস = শূন্য হয়, [জিনিস ইস্পেটি] ডাকা হবে না এবং সর্বদা মিথ্যা / কোনও ফিরিয়ে দেয় না। নীল পরীক্ষা করার জন্য, সেখানে একটি প্যারামিটার থাকা দরকার be নীল বস্তুগুলি কোনও বিভাগের মাধ্যমে শূন্য হিসাবে তাদের তুলনা করতে পারে না।
ক্রিস

3
@ ক্রিস তারপর আপনি বিভাগের পদ্ধতিটি -isNotEmpty:) এ পরিবর্তন করতে পারবেন:
নিলসবট

93

প্রথম পন্থাটি বৈধ, তবে আপনার স্ট্রিংয়ের ফাঁকা স্থান ( @" ") থাকলে তা কার্যকর হয় না । সুতরাং এটি পরীক্ষা করার আগে আপনাকে অবশ্যই এই সাদা স্পেসগুলি সাফ করতে হবে।

এই কোডটি স্ট্রিংয়ের উভয় পক্ষের সমস্ত ফাঁকা স্থান সাফ করে:

[stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ];

একটি ভাল ধারণা একটি ম্যাক্রো তৈরি করা হয়, সুতরাং আপনাকে এই দৈত্য লাইনটি টাইপ করতে হবে না:

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

এখন আপনি ব্যবহার করতে পারেন:

NSString *emptyString = @"   ";

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

3
ম্যাক্রোগুলি যখন প্রয়োজনীয় না হয় তখন কেন তাদের ব্যবহার করবেন? এই ক্ষেত্রে যে কোনও প্রকারের সুরক্ষা সত্যিকারের উপকারের জন্য ত্যাগ করা হয়।
ইএম

সহজ সুবিধার জন্য, আপনি যদি "[অবজেক্ট স্ট্রিংঅজেক্ট স্ট্রিংবাই ট্রিমিংচ্যাকার্টারস্নিট সেট লিখতে চান:] [এনএসচ্যারেক্টারসেট হোয়াইটস্পেসচ্যারাকটারসেট]]" আপনি যখনই কোনও স্ট্রিং ফাঁকা আছে কিনা তা পরীক্ষা করতে চান, আপনার উপর নির্ভর করে।
SEQOY উন্নয়ন দল

18
এটি আরও ভাল কোনও NSStringবিভাগ দ্বারা পরিবেশন করা হবে যা একটি পদ্ধতি যুক্ত trimmedStringকরে যা আপনার লিখিতভাবে ঠিক তেমন করে।
ডেভ দেলং

2
নোট করুন যে whitespaceCharacterSetঅ্যাপলগুলিতে নিউলাইনগুলি অন্তর্ভুক্ত নেই! এখানে আমি লিখেছি এমন একটি বিভাগ trimএবং কিছু অন্যান্য দরকারী পদ্ধতি এখানে রয়েছে: github.com/alexch/unsuck/blob/master/unsuck/NSString%2BUnsuck.m github.com/alexch/unsuck/blob/master/unsuckT
অ্যালেক্সচ্যাফি

@ EE আমি ম্যাক্রোগুলের অনুরাগী নই, তবে আপনার টাইপ-সুরক্ষার বিষয়টি আমি বুঝতে পারি না। সংকলনের সময় ম্যাক্রোটিকে এর বিষয়বস্তুগুলির সাথে প্রতিস্থাপন করা হয় তাই আপনি যদি কোনও এনএসএসস্ট্রিং থেকে আলাদা কিছু নিয়ে ম্যাক্রোকে অনুরোধ করেন তবে আপনি এখনও সংকলকটি থেকে একটি বার্তা পান। বিভাগগুলি যাইহোক অনেক বেশি ভাল হবে।
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
এটি উইল শিপলির কাজ। এফওয়াইআই, আপনি [জিনিসটি কিন্ডঅফক্লাস: [এনএসনুল ক্লাস]] কেবলমাত্র (জিনিস == [এনএসনাল নাল])
স্টিভ এন

ভাই .... আমি ঠিক যা খুঁজছিলাম আমি পাগল হয়ে যাচ্ছিলাম, কেন কাজ করার চেষ্টা করছিলাম কেন আমার "সেলফোর্ডরোআউটআইডেক্সপথ" ফাংশনটি নাল স্ট্রিংয়ের কারণে ক্র্যাশ হচ্ছে (এবং আমি সমস্যাটি ধরতে পারিনি)। এই ফাংশনটি এটি পুরোপুরি সমাধান করেছে।
মাইক গ্লেডহিল

@ ব্রান মন্তব্যের অনুলিপি: আপনি যদি এমন পরিস্থিতিতে থাকেন যে আপনি কী ধরণের অবজেক্টটি চেক করছেন তা আপনি জানেন না, আমি অনুমান করি এটি কাজ করে। তবে আমি প্রস্তাব দিচ্ছি যে আপনি যদি কোনও জিনিস 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) হোয়াইটস্পেস (এনএসএসটিং *);
জেবিআরউইলকিনসন

6
এটির একটি বাস্তবায়ন। আমি এই বিভাগটি প্রয়োগ করেছি, এবং একটি মোচড় আছে। যদি আপনি একে শূন্য স্ট্রিংয়ে কল করেন তবে এই ফাংশনটি কখনই ডাকা হয় না এবং আপনি কোনও ফেরতের মান হিসাবে কোনও 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

সমস্যাটি হ'ল আত্ম যদি শূন্য থাকে তবে এই ফাংশনটি কখনই ডাকা হয় না। এটি মিথ্যা প্রত্যাবর্তন করবে, যা পছন্দসই।


সেরা সমাধান যেহেতু ক) উদাহরণ পদ্ধতি এবং খ) বিভাগের গ) নীল কেস নিজেই 'ইসন নট এম্পটি' থেক্স দ্বারা পরিচালিত হয়!
ডেনিস

দুর্দান্ত ধারণা, খুব খারাপ -(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;
}

স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 21605075/… এ মন্তব্য কেন দেখুন এটি ভুল। এছাড়াও এটি কীভাবে ভাল তবে এখানে অন্যান্য উত্তরগুলি।
পোপিয়ে

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

বা যদি NSStringOচ্ছিক হয়:

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 । আমি এর জন্য একটি বিভাগের ধারণা পছন্দ করি
ড্যানিয়েল গোমেজ রিকো

না, আমরা এটি বিভাগ বলতে পারি না। যদি এই ফাংশনটি এনএসএসস্ট্রিং শ্রেণির অধীনে প্রয়োগ করা হয় তবে এটি বিভাগ। অন্যথায় আমরা এই পদ্ধতিটি যেখানেই প্রয়োগ করেছি সেখানে শ্রেণীর নাম দিয়ে কল করতে পারি। বুল যেমন এম্পটিএসটিআর = [মাই ক্লাসনাম + স্ট্রিংএম্পটি: স্ট্র] তবে তবুও, আমরা এটিকে বিভাগের অধীনে ঘোষণা করলে এটি আরও ভাল হবে। কারণ একরকম আমাদের বিভাগগুলির সুবিধাও নেওয়া দরকার।
iDevAmit

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

আপনার স্ট্রিংটি খালি আছে কিনা তা পরীক্ষা করার জন্য দুটি পদ্ধতি রয়েছে:

ধরা যাক আপনার স্ট্রিংয়ের নাম 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 কে একটি বার্তা শূন্য বা 0 ফিরে আসবে, সুতরাং শূন্যের জন্য পরীক্ষা করার প্রয়োজন নেই :)।

শুভ কোডিং ...


আমি এটি বহুবার ব্যবহার করেছি। একেবারে এক্সটেনশান, বিভাগ এবং কি কি প্রয়োজন নেই।
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

এনএসডিকোরিয়াস সাপোর্টের পাশাপাশি একটি ছোট পরিবর্তন যুক্ত করতে খুব দরকারী পোস্ট

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 বা NSD অভিধান হয় কিনা আপনি যদি না জানেন তবে আপনার বড় সমস্যা রয়েছে। এই কল করার পরে আপনার পরবর্তী ম্যাক্রোটি কী হতে চলেছে 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
করেননি

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

যে কোনও ক্ষেত্রে সবচেয়ে ভাল উপায় হল প্রদত্ত স্ট্রিংয়ের দৈর্ঘ্য পরীক্ষা করা this এর জন্য যদি আপনার স্ট্রিংটি মাইস্ট্রিং হয় তবে কোডটি হ'ল:

    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
জেফারি থমাস

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