如何检查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 = @"&amp;"; //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);
这一行很容易执行一个三个行动:
- 检查你的string,你不想要的字符
- 可以用你喜欢的任何东西来代替它们
- 不影响周围的代码
NSString* expectedString = nil; if([givenString hasPrefix:@"*"]) { expectedString = [givenString substringFromIndex:1]; }