如何检查NSString是否以某个字符(字符*)开头。
*是单元格类型的指示符,所以我需要没有*的NSString的内容,但需要知道*是否存在。
答案 0 :(得分:445)
您可以使用-hasPrefix:
的{{1}}方法:
<强>目标-C:强>
NSString
<强>夫特:强>
NSString* output = nil;
if([string hasPrefix:@"*"]) {
output = [string substringFromIndex:1];
}
答案 1 :(得分:12)
您可以使用:
NSString *newString;
if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) {
newString = [myString substringFromIndex:1];
}
答案 2 :(得分:8)
hasPrefix效果特别好。
例如,如果您在NSString
中查找http网址,则可以使用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匹配接收器的开始字符,则返回值为YES,否则为NO。如果aString
为空,则返回NO。
答案 3 :(得分:4)
使用characterAtIndex:
。如果第一个字符是星号,请使用substringFromIndex:
获取字符串sans'*'。
答案 4 :(得分:4)
NSString *stringWithoutAsterisk(NSString *string) {
NSRange asterisk = [string rangeOfString:@"*"];
return asterisk.location == 0 ? [string substringFromIndex:1] : string;
}
答案 5 :(得分:4)
另一种做法..
可以帮助别人......
if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
//starts with http
}
答案 6 :(得分:3)
作为更一般的答案,请尝试使用hasPrefix方法。例如,下面的代码检查字符串是否以10开头,这是用于识别某个问题的错误代码。
NSString* myString = @"10:Username taken";
if([myString hasPrefix:@"10"]) {
//display more elegant error message
}
答案 7 :(得分:1)
这可能有帮助吗? :)
只需搜索索引0处的字符,然后将其与您要查找的值进行比较!
答案 8 :(得分: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);
这一行很容易在一个中执行三个动作:
答案 9 :(得分:0)
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
expectedString = [givenString substringFromIndex:1];
}