স্ট্রিংয়ে একটি নির্দিষ্ট শব্দ রয়েছে কিনা আমি কীভাবে সনাক্ত করতে পারি? উদাহরণস্বরূপ, আমার নীচে একটি স্ট্রিং রয়েছে যা পড়ে:
@"Here is my string."
আমি জানতে চাইছি আমি উদাহরণস্বরূপ "হ'ল" স্ট্রিংয়ের কোনও শব্দ সনাক্ত করতে পারি কিনা।
rangeOfString।
স্ট্রিংয়ে একটি নির্দিষ্ট শব্দ রয়েছে কিনা আমি কীভাবে সনাক্ত করতে পারি? উদাহরণস্বরূপ, আমার নীচে একটি স্ট্রিং রয়েছে যা পড়ে:
@"Here is my string."
আমি জানতে চাইছি আমি উদাহরণস্বরূপ "হ'ল" স্ট্রিংয়ের কোনও শব্দ সনাক্ত করতে পারি কিনা।
rangeOfString।
উত্তর:
আমি এখানে এটি কীভাবে করব:
NSString *someString = @"Here is my string";
NSRange isRange = [someString rangeOfString:@"is " options:NSCaseInsensitiveSearch];
if(isRange.location == 0) {
//found it...
} else {
NSRange isSpacedRange = [someString rangeOfString:@" is " options:NSCaseInsensitiveSearch];
if(isSpacedRange.location != NSNotFound) {
//found it...
}
}
আপনি এটিকে সহজেই এখানে বিভাগ হিসাবে যুক্ত করতে পারেন NSString:
@interface NSString (JRStringAdditions)
- (BOOL)containsString:(NSString *)string;
- (BOOL)containsString:(NSString *)string
options:(NSStringCompareOptions)options;
@end
@implementation NSString (JRStringAdditions)
- (BOOL)containsString:(NSString *)string
options:(NSStringCompareOptions)options {
NSRange rng = [self rangeOfString:string options:options];
return rng.location != NSNotFound;
}
- (BOOL)containsString:(NSString *)string {
return [self containsString:string options:0];
}
@end
containsStringএনএসএসস্ট্রিং-এ এক্সপোজড নামে একটি নতুন পদ্ধতি রয়েছে ।
বাক্যে শব্দটি স্ক্যান করতে নিম্নলিখিত কোডটি ব্যবহার করুন।
NSString *sentence = @"The quick brown fox";
NSString *word = @"quack";
if ([sentence rangeOfString:word].location != NSNotFound) {
NSLog(@"Yes it does contain that word");
}
IOS8 এ আপনি এখন ব্যবহার করতে পারেন:
BOOL containsString = [@"Here is my string." containsString:@"is"];
এটি এখানে iOS7 এ কীভাবে "পুনঃনির্মাণ" করা যায় সে সম্পর্কে একটি আকর্ষণীয় পোস্ট রয়েছে: http://petersteinberger.com/blog/2014/retrofitting-containsstring-on-ios-7/
আমি NSLinguisticTagger ব্যবহার করার পরামর্শ দিচ্ছি । আমরা এটি অনুসন্ধানে ব্যবহার করতে পারিHere is my string. His isn't a mississippi isthmus. It is?
NSLinguisticTagger *linguisticTagger = [[NSLinguisticTagger alloc] initWithTagSchemes:@[
NSLinguisticTagSchemeTokenType,
]
options:
NSLinguisticTaggerOmitPunctuation |
NSLinguisticTaggerOmitWhitespace |
NSLinguisticTaggerOmitOther ];
[linguisticTagger setString:@"Here is my string. His isn't a mississippi isthmus. It is?"];
[linguisticTagger enumerateTagsInRange:NSMakeRange(0,
[[linguisticTagger string] length])
scheme:NSLinguisticTagSchemeTokenType
options:
NSLinguisticTaggerOmitPunctuation |
NSLinguisticTaggerOmitWhitespace |
NSLinguisticTaggerOmitOther |
NSLinguisticTaggerJoinNames
usingBlock:^(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop) {
NSLog(@"tag: %@, tokenRange: %@, sentenceRange: %@, token: %@",
tag,
NSStringFromRange(tokenRange),
NSStringFromRange(sentenceRange),
[[linguisticTagger string] substringWithRange:tokenRange]);
}];
এই ফলাফলগুলি:
tag: Word, tokenRange: {0, 4}, sentenceRange: {0, 19}, token: Here
tag: Word, tokenRange: {5, 2}, sentenceRange: {0, 19}, token: is
tag: Word, tokenRange: {8, 2}, sentenceRange: {0, 19}, token: my
tag: Word, tokenRange: {11, 6}, sentenceRange: {0, 19}, token: string
tag: Word, tokenRange: {19, 3}, sentenceRange: {19, 33}, token: His
tag: Word, tokenRange: {23, 2}, sentenceRange: {19, 33}, token: is
tag: Word, tokenRange: {25, 3}, sentenceRange: {19, 33}, token: n't
tag: Word, tokenRange: {29, 1}, sentenceRange: {19, 33}, token: a
tag: Word, tokenRange: {31, 11}, sentenceRange: {19, 33}, token: mississippi
tag: Word, tokenRange: {43, 7}, sentenceRange: {19, 33}, token: isthmus
tag: Word, tokenRange: {52, 2}, sentenceRange: {52, 6}, token: It
tag: Word, tokenRange: {55, 2}, sentenceRange: {52, 6}, token: is
এটি উপেক্ষা করে His mississippi এবং এরisthmus সনাক্ত isকরে isn't।
আমি আশা করি এটি আপনাকে সহায়তা করে, .. .m ফাইলে এই লাইনটি যুক্ত করুন বা একটি পৃথক শ্রেণী তৈরি করুন এবং এই কোডটি সংহত করুন।
@implementation NSString (Contains)
- (BOOL) containsString: (NSString*) substring
{
NSRange range = [self rangeOfString : substring];
BOOL found = ( range.location != NSNotFound );
return found;
}
@end
একটি সম্পূর্ণ সমাধান প্রথমে স্ট্রিংটির জন্য স্ক্যান করে (যোগ ফাঁকা ছাড়াই), তারপরে তাত্ক্ষণিকভাবে পূর্ববর্তী অক্ষরটি ফাঁকা বা লাইনের শুরু কিনা তা পরীক্ষা করে দেখুন। একইভাবে তাত্ক্ষণিকভাবে নীচের অক্ষরটি ফাঁকা বা লাইনের শেষ কিনা তা পরীক্ষা করে দেখুন। যদি উভয় পরীক্ষা পাস করে তবে আপনার একটি ম্যাচ আছে। আপনার চাহিদা আপনার কাছে চেক পারে উপর নির্ভর করে ,, .,() , ইত্যাদি
অবশ্যই একটি বিকল্প পন্থা হ'ল স্ট্রিংকে শব্দের মধ্যে পার্স করা এবং প্রতিটি শব্দ পৃথকভাবে পরীক্ষা করা।