উদ্দেশ্যমূলক সি-তে কেস কে সংবেদনশীল তুলনা সম্পর্কে যে কোনও সংস্থান সম্পর্কে আমাকে নির্দেশ করতে পারে? এটির সমতুল্য পদ্ধতি আছে বলে মনে হয় নাstr1.equalsIgnoreCase(str2)
উদ্দেশ্যমূলক সি-তে কেস কে সংবেদনশীল তুলনা সম্পর্কে যে কোনও সংস্থান সম্পর্কে আমাকে নির্দেশ করতে পারে? এটির সমতুল্য পদ্ধতি আছে বলে মনে হয় নাstr1.equalsIgnoreCase(str2)
উত্তর:
if( [@"Some String" caseInsensitiveCompare:@"some string"] == NSOrderedSame ) {
// strings are equal except for possibly case
}
ডকুমেন্টেশন অনুসন্ধান এবং তুলনা পদ্ধতিতে অবস্থিত
NSString
কোনও বুলিয়ান ফেরত দেয় এমন কোনও বিভাগের অভ্যন্তরীণ পদ্ধতি হিসাবে সেই তুলনাটি প্রয়োগ করা । তারপর প্রাপ্তির স্ট্রিং হলে nil
, একটি সম্পূর্ণ রিটার্ন যেমন পদ্ধতি NO
।
NSString *stringA;
NSString *stringB;
if (stringA && [stringA caseInsensitiveCompare:stringB] == NSOrderedSame) {
// match
}
নোট: stringA &&
কারণ যখন প্রয়োজন বোধ করা হয় stringA
হয় nil
:
stringA = nil;
[stringA caseInsensitiveCompare:stringB] // return 0
এবং তাই ঘটে NSOrderedSame
হিসাবে সংজ্ঞায়িত করা হয়0
।
নিম্নলিখিত উদাহরণটি একটি সাধারণ ক্ষতি:
NSString *rank = [[NSUserDefaults standardUserDefaults] stringForKey:@"Rank"];
if ([rank caseInsensitiveCompare:@"MANAGER"] == NSOrderedSame) {
// what happens if "Rank" is not found in standardUserDefaults
}
আপনি যদি কেবল সংবেদনশীলতার চেয়ে বেশি নিয়ন্ত্রণ চান তবে একটি বিকল্প হ'ল:
[someString compare:otherString options:NSCaseInsensitiveSearch];
সংখ্যার অনুসন্ধান এবং ডায়াক্রিটিক্যাল সংবেদনশীলতা দুটি সহজ বিকল্প y
if ([someString compare:otherString options:NSCaseInsensitiveSearch] && someString.length > 0 && someString != (id)[NSNull null])
আপনি তুলনা করার আগে সর্বদা একই পরিস্থিতিতে ছিলেন তা নিশ্চিত করতে পারতেন:
if ([[stringX uppercaseString] isEqualToString:[stringY uppercaseString]]) {
// They're equal
}
নীল স্ট্রিংগুলির তুলনা করার ক্ষেত্রে ম্যাথামের দ্বারা বর্ণিত সম্ভাব্য সমস্যাটি এড়ানো প্রধান সুবিধা। আপনি যে কোনও একটি compare:options:
পদ্ধতি করার আগে স্ট্রিংটি শূন্য নয় তা পরীক্ষা করতে পারেন , বা আপনি অলস হতে পারেন (আমার মতো) এবং প্রতিটি তুলনার জন্য একটি নতুন স্ট্রিং তৈরি করার অতিরিক্ত ব্যয় উপেক্ষা করতে পারেন (যা কেবলমাত্র যদি আপনি কেবল একটিই করছেন তবে এটি ন্যূনতম বা দুটি তুলনা)।
caseInsensitiveCompare
), সর্বদা এটি ব্যবহার করুন।
এটি করার একটি নতুন উপায়। আইওএস 8
let string: NSString = "Café"
let substring: NSString = "É"
string.localizedCaseInsensitiveContainsString(substring) // true
true
"ক্যাফে" এবং "E" জন্য, এই স্পষ্টভাবে হয় না একটি সঠিক উত্তর।
জেসন কোকোর জবাবটি অলসতার জন্য সুইফটে রূপান্তর করা :)
if ("Some String" .caseInsensitiveCompare("some string") == .OrderedSame)
{
// Strings are equal.
}
ম্যাকোজে আপনি কেবল ব্যবহার করতে পারেন -[NSString isCaseInsensitiveLike:]
, যা BOOL
ঠিক মত ফিরে আসে -isEqual:
।
if ([@"Test" isCaseInsensitiveLike: @"test"])
// Success
NSMutableArray *arrSearchData;
NSArray *data=[arrNearByData objectAtIndex:i];
NSString *strValue=[NSString stringWithFormat:@"%@", [data valueForKey:@"restName"]];
NSRange r = [strValue rangeOfString:key options:NSCaseInsensitiveSearch];
if(r.location != NSNotFound)
{
[arrSearchData addObject:data];
}
@"Some String"
অন্য কোন কল থেকে পেয়েছি এবং হতে হবে হয়nil
, আপনারif
দেবtrue
পাঠিয়েcaseInsensitiveCompare
করারnil
বৈধ অন্য ফলাফল নেই এবংnil
যা আমাদের ক্ষেত্রে তুলনা সঙ্গেNSOrderedSame
ফিরে আসবেtrue
(NSOrderedSame
0 হিসাবে সংজ্ঞায়িত করা হয়)। এটি বেশ বিধ্বংসী বাগের উত্স হতে পারে, যেমনটি আমার ক্ষেত্রে ছিল। চিয়ার্স!