你如何检查NSString是否以一个特定的字符(字符*)开始。

*是单元格类型的指示器,所以我需要这个NSString的内容没有*,但需要知道*是否存在。


当前回答

这个漂亮的小代码是我偶然发现的,我还没有在Stack上看到它的建议。它只在你想删除或修改的字符存在的情况下才有效,这在很多情况下都很方便。如果字符/s不存在,它不会改变你的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);

这一行超级简单,可以同时执行三个动作:

检查字符串中不需要的字符 可以替换成你喜欢的任何东西吗 不影响周围的代码

其他回答

hasPrefix工作得特别好。 例如,如果你在NSString中寻找一个http url,你会使用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, 

parameter aString是你要找的字符串 如果string与接收方的开头字符匹配,则返回值为YES,否则为NO。如果aString为空则返回NO。

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

你可以使用:

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

另一种方法。

希望它能帮助某人……

if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
  //starts with http
}
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
   expectedString = [givenString substringFromIndex:1];
}