如何检查NSString是否以某个字符开始

你如何检查NSString是否以某个字符(字符*)开始。

*是一个单元格types的指示器,所以我需要这个NSString的内容而不是*,但是需要知道*是否存在。

你可以使用NSString-hasPrefix:方法:

Objective-C的:

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

迅速:

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

您可以使用:

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

hasPrefix工作得特别好。 例如,如果您在NSString中查找http url,则可以使用componentsSeparatedByString创build一个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返回一个布尔值,指示给定的string是否与接收者的开始字符匹配。

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

参数aString是要查找的string如果aString与接收方的起始字符匹配,则返回值为YES,否则返回NO。 如果aString为空,则返回NO。

使用characterAtIndex: 如果第一个字符是星号,则使用substringFromIndex:来获取stringsans'*'。

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

作为更一般的答案,请尝试使用hasPrefix方法。 例如,下面的代码检查一个string是否以10开头,这是用来识别某个问题的错误代码。

 NSString* myString = @"10:Username taken"; if([myString hasPrefix:@"10"]) { //display more elegant error message } 

另一种做法..

愿它帮助别人…

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

这可能有帮助吗? 🙂

http://developer.apple.com/mac/ library / documentation / Cocoa / Reference / Foundation / Class /

只需search索引0处的字符,并将其与您正在查找的值进行比较!

这是我偶然发现的一小段代码,我还没有在Stack上看到它。 只有当你想删除或改变的字符存在时才有效,这在很多情况下都很方便。 如果字符不存在,它不会改变你的NSString:

 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. 检查你的string,你不想要的字符
  2. 可以用你喜欢的任何东西来代替它们
  3. 不影响周围的代码
 NSString* expectedString = nil; if([givenString hasPrefix:@"*"]) { expectedString = [givenString substringFromIndex:1]; }