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

Xet*_*ius 208 objective-c nsstring

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

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

Rob*_*ger 448

您可以使用以下-hasPrefix:方法NSString:

Objective-C的:

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

迅速:

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

  • 精彩!谢谢! (4认同)

Chr*_*ong 12

您可以使用:

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

  • 您不能向unichars发送消息,它们可能不等于NSStrings. (3认同)

Igg*_*ggy 8

hasPrefix工作得特别好.例如,如果你在a中寻找一个http url NSString,你将使用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]);
    }

}
Run Code Online (Sandbox Code Playgroud)

hasPrefix 返回一个布尔值,指示给定的字符串是否与接收者的开头字符匹配.

- (BOOL)hasPrefix:(NSString *)aString, 
Run Code Online (Sandbox Code Playgroud)

参数aString是您要查找的字符串如果aString匹配接收者的开头字符,则返回值为YES,否则为NO.如果aString为空则返回NO .


Kyl*_*egg 5

作为更一般的答案,请尝试使用 hasPrefix 方法。例如,下面的代码检查字符串是否以 10 开头,这是用于识别特定问题的错误代码。

NSString* myString = @"10:Username taken";

if([myString hasPrefix:@"10"]) {
      //display more elegant error message
}
Run Code Online (Sandbox Code Playgroud)