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

时间:2010-03-23 20:39:59

标签: objective-c nsstring

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

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

10 个答案:

答案 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)

这可能有帮助吗? :)

http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/characterAtIndex

只需搜索索引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 = @"&lt;/p&gt;";
NSString * prefixToRemove = @"&lt;p&gt;";
NSString * randomCharacter = @"&lt;/strong&gt;";
NSString * moreRandom = @"&lt;strong&gt;";
NSString * makeAndSign = @"&amp;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);

这一行很容易在一个中执行三个动作:

  1. 检查字符串中是否有您不想要的字符
  2. 可以用任何你喜欢的方式替换它们
  3. 不影响周围的代码

答案 9 :(得分:0)

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