এনএসএসআরটিং একটি নির্দিষ্ট অক্ষর দিয়ে শুরু হয় কিনা তা কীভাবে পরীক্ষা করবেন


210

কোনও এনএসএসআরটিং নির্দিষ্ট অক্ষর (চরিত্র *) দিয়ে শুরু হয় কিনা তা আপনি কীভাবে পরীক্ষা করবেন।

* * ঘরের প্রকারের জন্য একটি সূচক, সুতরাং আমার এই এনএসএসস্ট্রিংয়ের বিষয়বস্তু * ছাড়াই প্রয়োজন, তবে * উপস্থিত রয়েছে কিনা তা জানতে হবে।

উত্তর:


453

আপনি এই -hasPrefix:পদ্ধতিটি ব্যবহার করতে পারেন NSString:

উদ্দেশ্য গ:

NSString* output = nil;
if([string hasPrefix:@"*"]) {
    output = [string substringFromIndex:1];
}

সুইফট:

var output:String?
if string.hasPrefix("*") {
    output = string.substringFromIndex(string.startIndex.advancedBy(1))
}

এই একই পদ্ধতিটি ব্যবহার করার কোনও উপায় আছে কি তবে পরিবর্তে hasPrefix:@"word"আপনি একটিতে সঞ্চিত একাধিক মান পরীক্ষা করে দেখুন NSArray? উদাহরণস্বরূপ: NSArray *words = [NSArray arrayWithObjects:@"foo",@"bar",@"baz",nil];?
আদমদেহভেন

^^ আমার প্রশ্ন এখানে দেখুন: stackoverflow.com/questions/18019660/...
adamdehaven

চমৎকার উত্তর! আপনাকে ধন্যবাদ @ রব কেনিগার
গণেশ গুতুরি

1
"টোল ফ্রি ব্রিজিং" এর কারণে এনএসএসআর্টিংগুলিতে সিএফএসস্ট্রিংহাসপ্রিফিক্স () ব্যবহার করা যেতে পারে। সিএফএসস্ট্রিংহাসপ্রিফিক্স () এর পারফরম্যান্সটি 2-3 গুণ ভাল (কমপক্ষে আমার ডেটা সেট ব্যবহার করার সময়) বলে মনে হচ্ছে। সুতরাং আপনি যদি এটি কোনও পারফরমেন্স সংবেদনশীল জায়গায় ব্যবহার করে থাকেন তবে আপনি এর পরিবর্তে সিএফএসস্ট্রিংহাসপ্রিফিক্স () চেষ্টা করতে চাইতে পারেন।
জন বোয়র্স

12

তুমি ব্যবহার করতে পার:

NSString *newString;
if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) {
     newString = [myString substringFromIndex:1];
}

3
আপনি ইউনিকারগুলিতে বার্তা প্রেরণ করতে পারবেন না এবং তারা সম্ভবত এনএসএসআরটিংয়ের সমান হবে না।
চক

8

hasPrefix বিশেষভাবে ভাল কাজ করে। উদাহরণস্বরূপ, যদি আপনি একটিতে একটি HTTP url সন্ধান করছিলেন NSString, আপনি componentsSeparatedByStringএকটি তৈরি করতে NSArrayএবং পুনরুক্তিটি অ্যারের তৈরি hasPrefixকরতে ব্যবহার করে HTTP দিয়ে শুরু হওয়া উপাদানগুলির সন্ধান করতে পারেন।

NSArray *allStringsArray = 
   [myStringThatHasHttpUrls componentsSeparatedByString:@" "]

for (id myArrayElement in allStringsArray) {
    NSString *theString = [myArrayElement description];
    if ([theString hasPrefix:@"http"]) {
        NSLog(@"The URL  is %@", [myArrayElement description]);
    }

}

hasPrefix একটি বুলিয়ান মান প্রদান করে যা নির্দেশ করে যে প্রদত্ত স্ট্রিংটি প্রাপকের প্রথম অক্ষরের সাথে মেলে কিনা।

- (BOOL)hasPrefix:(NSString *)aString, 

প্যারামিটারটি aStringএমন একটি স্ট্রিং যা আপনি রিটার্ন মানটির জন্য সন্ধান করছেন এটি হ্যাঁ, যদি স্ট্রিং রিসিভারের শুরুর অক্ষরের সাথে মেলে, অন্যথায় না। aStringখালি থাকলে কোনও নম্বর দেয় না ।


4

ব্যবহার characterAtIndex:। প্রথম অক্ষরটি যদি একটি তারকাচিহ্ন থাকে substringFromIndex:তবে স্ট্রিং সান '*' পেতে ব্যবহার করুন ।


4
NSString *stringWithoutAsterisk(NSString *string) {
    NSRange asterisk = [string rangeOfString:@"*"];
    return asterisk.location == 0 ? [string substringFromIndex:1] : string;
}

4

এটি করার জন্য অন্য পদ্ধতি ..

এটি কাউকে সাহায্য করতে পারে ...

if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
  //starts with http
}

3

আরও সাধারণ উত্তর হিসাবে, hasPrefix পদ্ধতি ব্যবহার করার চেষ্টা করুন। উদাহরণস্বরূপ, নীচের কোডটি 10 ​​টি দিয়ে একটি স্ট্রিং শুরু হয় কিনা তা যাচাই করে যা কোনও নির্দিষ্ট সমস্যা চিহ্নিত করতে ব্যবহৃত ত্রুটি কোড।

NSString* myString = @"10:Username taken";

if([myString hasPrefix:@"10"]) {
      //display more elegant error message
}

1

এই সাহায্য করতে পারে? :)

http://developer.apple.com/mac/library/docamentation/Cocoa/References/Foundation/Class/NSString_Class/References/NSString.html#//apple_ref/occ/instm/NSString/characterAtIndex :

কেবল সূচক 0-তে অক্ষরটি অনুসন্ধান করুন এবং এটির যে মূল্যটি আপনি খুঁজছেন তার সাথে তুলনা করুন!


0

এই দুর্দান্ত সামান্য কোডটি আমি সুযোগ পেয়েছি এবং এটি স্ট্যাকের জন্য প্রস্তাবিত এখনও দেখতে পেলাম। এটি কেবলমাত্র তখনই কার্যকর হয় যখন আপনি যে অক্ষরগুলি মুছতে বা পরিবর্তন করতে চান তা উপস্থিত থাকে, যা অনেক পরিস্থিতিতে উপযুক্ত। চরিত্র / গুলি উপস্থিত না থাকলে এটি আপনার এনএসএস স্ট্রিংকে পরিবর্তন করবে না:

NSString = [yourString stringByReplacingOccurrencesOfString:@"YOUR CHARACTERS YOU WANT TO REMOVE" withString:@"CAN either be EMPTY or WITH TEXT REPLACEMENT"];

আমি এটি এইভাবে ব্যবহার করি:

//declare what to look for
NSString * suffixTorRemove = @"</p>";
NSString * prefixToRemove = @"<p>";
NSString * randomCharacter = @"</strong>";
NSString * moreRandom = @"<strong>";
NSString * makeAndSign = @"&";

//I AM INSERTING A VALUE FROM A DATABASE AND HAVE ASSIGNED IT TO returnStr
returnStr = [returnStr stringByReplacingOccurrencesOfString:suffixTorRemove withString:@""];
returnStr = [returnStr stringByReplacingOccurrencesOfString:prefixToRemove withString:@""];
returnStr = [returnStr stringByReplacingOccurrencesOfString:randomCharacter withString:@""];
returnStr = [returnStr stringByReplacingOccurrencesOfString:moreRandom withString:@""];
returnStr = [returnStr stringByReplacingOccurrencesOfString:makeAndSign withString:@"&"];

//check the output
NSLog(@"returnStr IS NOW: %@", returnStr);

এই এক লাইনটি একটিতে তিনটি ক্রিয়া সম্পাদন করা অত্যন্ত সহজ:

  1. আপনি চান না এমন চরিত্রের জন্য আপনার স্ট্রিং পরীক্ষা করে
  2. আপনি যা পছন্দ করেন তাদের সাথে প্রতিস্থাপন করতে পারেন
  3. পার্শ্ববর্তী কোডকে প্রভাবিত করে না

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