স্ট্রিং তুলনা উদ্দেশ্য - সি


93

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

কেন এই আগুন লাগবে না? নিশ্চয়ই দুটি স্ট্রিং ম্যাচ?

NSString *myString = @"hello world";

if(myString == @"hello world")
    return;

4
স্ক্রিনশট অদৃশ্য হয়ে যাওয়ার কারণে এই প্রশ্নটি এখন বেশিরভাগই অকেজো। এই কারণেই প্রশ্নগুলিতে কোডটি অনুলিপি করা উচিত।
jscs

স্ক্রিনশটটি আমার মনে হয় ত্রুটি ছিল, তবে উত্তরটি 2 বছর আগে দেওয়া হয়েছিল!
ingh.am

4
তবে ভবিষ্যতের কোনও পাঠক ত্রুটি বা কোডটি এটির মতো হিসাবে ব্যবহার করার জন্য আপনি যে কোডটি ব্যবহার করছেন তা দেখতে পাবে না, যার অর্থ এই প্রশ্নটি অন্য কাউকে সহায়তা করতে পারে না।
jscs

আমি ছবিটি সন্ধান করব। আমি পেয়েছি যে এটি অন্যান্য প্রশ্নের জন্য একটি রেফারেন্স বেসের মতো তবে এখন এটি বন্ধ করা কিছুটা অর্থহীন।
ingh.am

4
কেন এই প্রশ্নটি বন্ধ? এটি একটি পুরোপুরি বৈধ প্রশ্ন!
ইবিজ

উত্তর:


219

-isEqualToString:দুটি স্ট্রিংয়ের মান তুলনা করতে পদ্ধতিটি ব্যবহার করুন । সি ==অপারেটর ব্যবহার করে কেবলমাত্র বস্তুর ঠিকানাগুলির তুলনা করা হবে।

if ([category isEqualToString:@"Some String"])
{
    // Do stuff...
}

4
আঃ! আপনাকে অনেক ধন্যবাদ। এই এক বোকা কিছুটা মনে হচ্ছে!
ingh.am

4
আমার ধারণা হ'ল অবজেক্টিভ ++ এ আপনি সিনট্যাক্টিক্যালি-মিষ্টিমূলক ব্যবহারের ক্ষমতা == ব্যবহারের জন্য একটি অপারেটর ওভারলোড তৈরি করতে পারেন তবে কোনও বুদ্ধিমান সি সি প্রোগ্রামার এটি করবে না, কারণ == কেবলমাত্র উদ্দেশ্য সি বিষয়বস্তুগুলিতে পরিচয় পরীক্ষার জন্য ব্যবহৃত হয়।
ওয়ারেন পি

48

আপনি যা প্রয়োজন তার উপর নির্ভর করে আপনি কেস-সংবেদনশীল বা কেস-সংবেদনশীল তুলনা ব্যবহার করতে পারেন। কেস-সংবেদনশীল এরকম:

if ([category isEqualToString:@"Some String"])
{
   // Both strings are equal without respect to their case.
}

কেস-সংবেদনশীল এরকম:

if ([category compare:@"Some String" options:NSCaseInsensitiveSearch] == NSOrderedSame)
{
   // Both strings are equal with respect to their case.
}

4
আমি মনে করি এটি হওয়া উচিত: ([বিভাগের তুলনা: @ "কিছু স্ট্রিং" বিকল্পগুলি: এনএসকেসআইসেনসেটিভ অনুসন্ধান] == এনএসআরডসেম)
জাকএল

9
"তুলনা" ফাংশনটি সম্পর্কে সতর্ক থাকুন কারণ স্ট্রিংটি (এই ক্ষেত্রে "বিভাগ") যদি শূন্য থাকে তবে তুলনা করুন সর্বদা NSOrriedSame ফেরত আসবে।
nh32rg

এটি একটি দুর্দান্ত পয়েন্ট @ এনএইচ 32 আরজি !! +1 তার জন্য! আইকুয়ালটোস্ট্রিংয়ের কি একই সমস্যা আছে?
বদওয়াসেল

4

আপনি নীচের ফাংশনগুলির সাথে স্ট্রিংটির তুলনা করতে পারেন।

NSString *first = @"abc";
NSString *second = @"abc";
NSString *third = [[NSString alloc] initWithString:@"abc"];
NSLog(@"%d", (second == third))  
NSLog(@"%d", (first == second)); 
NSLog(@"%d", [first isEqualToString:second]); 
NSLog(@"%d", [first isEqualToString:third]); 

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