NSString
উদ্দেশ্য-সি-তে কোনও ফাঁকা থাকলে আমি কীভাবে পরীক্ষা করব ?
NSString
উদ্দেশ্য-সি-তে কোনও ফাঁকা থাকলে আমি কীভাবে পরীক্ষা করব ?
উত্তর:
আপনি যদি পরীক্ষা করতে পারেন [string length] == 0
। এটি যদি বৈধ তবে ফাঁকা স্ট্রিং (@ "") পাশাপাশি এটি শূন্য হয় কিনা তা পরীক্ষা length
করে দেখাবে , যেহেতু শূন্যপানে কল করাও 0 ফিরে আসবে।
ZERO WIDTH SPACE
যা বোঝায় তা আসলেই গুরুত্বপূর্ণ নয়, তবে @"\u200B"
এটি একটি চরিত্র তবে তবুও যদি আপনি স্ট্রিংটি খালি রাখার জন্য পরীক্ষা করেন তবে এটি বলবে যে এটিতে কোনও চরিত্র থাকার কারণে এটি তা নয়। এটি কেবল ইউনিকোড স্ট্যান্ডার্ড অনুসরণ করে মুদ্রণযোগ্য নয়।
![string length]
। আরও পরিষ্কার মনে হচ্ছে।
মার্কের উত্তরটি সঠিক। তবে আমি এই সুযোগটি উইল শিপলির সাধারণীকরণের একটি পয়েন্টার অন্তর্ভুক্ত করার জন্য নেব 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);
}
-isNotEmpty
:) এ পরিবর্তন করতে পারবেন:
প্রথম পন্থাটি বৈধ, তবে আপনার স্ট্রিংয়ের ফাঁকা স্থান ( @" "
) থাকলে তা কার্যকর হয় না । সুতরাং এটি পরীক্ষা করার আগে আপনাকে অবশ্যই এই সাদা স্পেসগুলি সাফ করতে হবে।
এই কোডটি স্ট্রিংয়ের উভয় পক্ষের সমস্ত ফাঁকা স্থান সাফ করে:
[stringObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ];
একটি ভাল ধারণা একটি ম্যাক্রো তৈরি করা হয়, সুতরাং আপনাকে এই দৈত্য লাইনটি টাইপ করতে হবে না:
#define allTrim( object ) [object stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ]
এখন আপনি ব্যবহার করতে পারেন:
NSString *emptyString = @" ";
if ( [allTrim( emptyString ) length] == 0 ) NSLog(@"Is empty!");
NSString
বিভাগ দ্বারা পরিবেশন করা হবে যা একটি পদ্ধতি যুক্ত trimmedString
করে যা আপনার লিখিতভাবে ঠিক তেমন করে।
whitespaceCharacterSet
অ্যাপলগুলিতে নিউলাইনগুলি অন্তর্ভুক্ত নেই! এখানে আমি লিখেছি এমন একটি বিভাগ trim
এবং কিছু অন্যান্য দরকারী পদ্ধতি এখানে রয়েছে: github.com/alexch/unsuck/blob/master/unsuck/NSString%2BUnsuck.m github.com/alexch/unsuck/blob/master/unsuckT
আমার দেখা সেরা সমাধানগুলির মধ্যে একটি (ম্যাট জি এর চেয়ে ভাল) এটি কিছু উন্নত ইনলাইন ফাংশন যা আমি কিছু গিট হাব রেপোতে তুলেছিলাম (উইল শিপলির একটি, তবে আমি লিঙ্কটি খুঁজে পাচ্ছি না):
// 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);
}
condenseToSingleNSData(id thing)
,? expandToNSArray(id thing)
? যত তাড়াতাড়ি বা পরে, আপনি জিজ্ঞাসা করবেন আপনি কোন ধরণের শ্রেণীর সাথে কাজ করছেন, এটি প্রথম রেফারেন্সে করা আরও ভাল।
আপনার এই বিভাগটি আরও ভালভাবে ব্যবহার করা উচিত:
@implementation NSString (Empty)
- (BOOL) isWhitespace{
return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]length] == 0);
}
@end
@implementation NSString (Empty) - (BOOL) empty{ return ([[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]length] == 0); } @end
মার্কস এবং কাইলের উত্তরগুলির সংমিশ্রণ হিসাবে।
আমি এটি রেখেছি:
@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]}
বিভাগে কাজ করবে না।
condenseToSingleNSData(id thing)
,? expandToNSArray(id thing)
? যত তাড়াতাড়ি বা পরে, আপনি জিজ্ঞাসা করবেন আপনি কোন ধরণের শ্রেণীর সাথে কাজ করছেন, এটি প্রথম রেফারেন্সে করা আরও ভাল।
কেবল আপনার স্ট্রিং নিম্নলিখিত পদ্ধতিতে পাস করুন:
+(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;
}
শুধু একটি ব্যবহার করুন 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
}
যদিও এটি একটি অবজেক্টিভ সি প্রশ্ন, আমার NSString
সুইফটে ব্যবহার করা দরকার তাই আমি এখানে একটি উত্তরও অন্তর্ভুক্ত করব।
let myNSString: NSString = ""
if myNSString.length == 0 {
print("String is empty.")
}
বা যদি NSString
Oচ্ছিক হয়:
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.")
}
আরও দেখুন: সুইফটে খালি স্ট্রিং পরীক্ষা করে দেখুন ?
এই উত্তরটি হ'ল ইতিমধ্যে প্রদত্ত উত্তরের সদৃশ, তবে শর্তগুলি পরীক্ষা করার ক্রমটিতে আমি কিছু পরিবর্তন এবং পরিবর্তন করেছি। নীচের কোডটি উল্লেখ করুন:
+(BOOL)isStringEmpty:(NSString *)str
{
if(str == nil || [str isKindOfClass:[NSNull class]] || str.length==0) {
return YES;
}
return NO;
}
আপনার স্ট্রিংটি খালি কিনা তা এই পদ্ধতিটি ব্যবহার করে আপনি পরীক্ষা করতে পারেন:
+(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;
}
সর্বোত্তম অনুশীলন হ'ল একটি ভাগ করা শ্রেণিকে ইউটিলিটি ক্লাস বলতে এবং এই পদ্ধতিটিকে বিজ্ঞাপন দেওয়া যাতে আপনি কেবল এই অ্যাপ্লিকেশনটির মাধ্যমে কল করে এই পদ্ধতিটি ব্যবহার করতে সক্ষম হবেন।
আপনার স্ট্রিংটি খালি আছে কিনা তা পরীক্ষা করার জন্য দুটি পদ্ধতি রয়েছে:
ধরা যাক আপনার স্ট্রিংয়ের নাম 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
}
উপরের যে কোনও একটি পদ্ধতি চয়ন করুন এবং স্ট্রিংটি খালি কিনা তা জেনে নিন।
সুতরাং স্ট্রিং দৈর্ঘ্যের চেয়ে 1 এর চেয়ে কম পরীক্ষা করার প্রাথমিক ধারণাটি বাদ দিয়ে প্রসঙ্গটি গভীরভাবে বিবেচনা করা গুরুত্বপূর্ণ। ভাষা মানুষের বা কম্পিউটার বা অন্যথায় খালি স্ট্রিংগুলির বিভিন্ন সংজ্ঞা থাকতে পারে এবং সেই একই ভাষার মধ্যে অতিরিক্ত প্রসঙ্গের অর্থ আরও পরিবর্তিত হতে পারে।
ধরা যাক খালি স্ট্রিংয়ের অর্থ "একটি স্ট্রিং যার মধ্যে বর্তমান প্রসঙ্গে উল্লেখযোগ্য কোনও অক্ষর নেই"।
এর অর্থ দৃশ্যত অর্থ হতে পারে, যেমন রঙ এবং ব্যাকগ্রাউন্ডের রঙ কোনও বৈশিষ্ট্যযুক্ত স্ট্রিংয়ে একই। কার্যকরভাবে খালি।
এর অর্থ অর্থপূর্ণ অক্ষরগুলির শূন্য হতে পারে। সমস্ত বিন্দু বা সমস্ত ড্যাশ বা সমস্ত আন্ডারস্কোর খালি বিবেচনা করা যেতে পারে। তদ্ব্যতীত, অর্থপূর্ণ তাৎপর্যপূর্ণ অক্ষরের খালিটি এমন একটি স্ট্রিং বোঝাতে পারে যার পাঠক বুঝতে পারে না এমন কোনও অক্ষর নেই। এগুলি কোনও ভাষা বা চরিত্রের অক্ষর হতে পারে পাঠকের কাছে অর্থহীন হিসাবে সংজ্ঞায়িত হয়। আমরা স্ট্রিংটি কোনও নির্দিষ্ট ভাষায় কোনও অজানা শব্দের রূপটি বলতে কিছুটা আলাদাভাবে সংজ্ঞা দিতে পারি।
আমরা খালি বলতে পারি যে গ্লাইফগুলি রেন্ডার করা হয়েছে তার নেতিবাচক জায়গার শতাংশের একটি ফাংশন।
এমনকি কোনও সাধারণ ভিজ্যুয়াল উপস্থাপনা সহ মুদ্রণযোগ্য অক্ষরের একটি ক্রমও সত্যই খালি নয়। নিয়ন্ত্রণের চরিত্রগুলি মাথায় আসে। বিশেষত নিম্ন ASCII পরিসীমা (আমি অবাক হয়েছি কেউই তাদের উল্লেখ করেনি কারণ তারা প্রচুর সিস্টেমের হোস করে এবং হোয়াইটস্পেস না কারণ তাদের সাধারণত গ্লাইফ থাকে না এবং ভিজ্যুয়াল মেট্রিক থাকে না)। তবুও স্ট্রিংয়ের দৈর্ঘ্য শূন্য নয়।
উপসংহার। এখানে দৈর্ঘ্য একমাত্র পরিমাপ নয়। প্রাসঙ্গিক সেট সদস্যতা এছাড়াও বেশ গুরুত্বপূর্ণ।
ক্যারেক্টার সেট সদস্যতা একটি খুব গুরুত্বপূর্ণ সাধারণ অতিরিক্ত পরিমাপ। অর্থপূর্ণ ক্রমগুলিও মোটামুটি সাধারণ। (SETI বা ক্রিপ্টো বা ক্যাপচাসগুলি ভাবেন) অতিরিক্ত আরও বিমূর্ত প্রসঙ্গের সেটও বিদ্যমান।
সুতরাং স্ট্রিংটি দৈর্ঘ্য বা হোয়াইটস্পেসের উপর ভিত্তি করে খালি খালি মনে করার আগে সাবধানতার সাথে ভাবুন।
এনএসডিকোরিয়াস সাপোর্টের পাশাপাশি একটি ছোট পরিবর্তন যুক্ত করতে খুব দরকারী পোস্ট
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);
}
condenseToSingleNSData(id thing)
,? expandToNSArray(id thing)
? যত তাড়াতাড়ি বা পরে, আপনি জিজ্ঞাসা করবেন আপনি কোন ধরণের শ্রেণীর সাথে কাজ করছেন, এটি প্রথম রেফারেন্সে করা আরও ভাল।
- (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;
}
stringByStrippingWhitespace
সেরা উপায়টি বিভাগটি ব্যবহার করা।
আপনি নিম্নলিখিত ফাংশন চেক করতে পারেন। যা যাচাই করার জন্য সমস্ত শর্ত আছে।
-(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;
}
if (string.length == 0) stringIsEmpty;
স্ট্রিংটি খালি কিনা তা আপনি সহজেই পরীক্ষা করতে পারেন:
if ([yourstring isEqualToString:@""]) {
// execute your action here if string is empty
}
আমি নীচের কোড ব্যবহার করে একটি খালি স্ট্রিং পরীক্ষা করেছি:
//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"];
}
যেমন তার মতই সোজা if([myString isEqual:@""])
বাif([myString isEqualToString:@""])
//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;
}
আপনার দুটি উপায়ে খালি স্ট্রিং থাকতে পারে:
1) @ "" // এর মধ্যে স্থান নেই
2) @ "" // স্থান ধারণ করুন
প্রযুক্তিগতভাবে উভয় স্ট্রিং খালি। আমরা দুটি জিনিস কেবল ওয়ান শর্ত ব্যবহার করে লিখতে পারি
if ([firstNameTF.text stringByReplacingOccurrencesOfString:@" " withString:@""].length==0)
{
NSLog(@"Empty String");
}
else
{
NSLog(@"String contains some value");
}
নিম্নলিখিত চেষ্টা করুন
NSString *stringToCheck = @"";
if ([stringToCheck isEqualToString:@""])
{
NSLog(@"String Empty");
}
else
{
NSLog(@"String Not Empty");
}
if(str.length == 0 || [str isKindOfClass: [NSNull class]]){
NSLog(@"String is empty");
}
else{
NSLog(@"String is not empty");
}
str.length
হলে একটি ব্যতিক্রম নিক্ষেপ করবে str
।
if( [txtMobile.text length] == 0 )
{
[Utility showAlertWithTitleAndMessage: AMLocalizedString(@"Invalid Mobile No",nil) message: AMLocalizedString(@"Enter valid Mobile Number",nil)];
}
@"\u200B"
(শুধুমাত্র ইউনিকোড অক্ষর নিয়ে গঠিত শূন্য প্রস্থের স্পেস । এটা ছাপানোর আউট 0 অক্ষর (Monospaced ফন্ট) ব্যবহার করে যাচাই হয়ে গেলে, কিন্তু string.length 1. দেব অন্যান্য ইউনিকোড অক্ষর (যেমন আছে প্রিন্ট হবে অবজেক্ট REPLACEMENT চরিত্র হতে পারে) যা একইভাবে আচরণ। আপনি পিডিএফ পাঠ্য বিশ্লেষণ করার পরে পরবর্তীটি পান