2011-03-14 145 views

回答

4

尝试使用rangeOfString:

NSRange result = [strOne rangeOfString:strTwo]; 

从文档:

返回NSRange结构在第一次出现aString的接收器中给出位置和长度。如果未找到aString或为空(@""),则返回{NSNotFound, 0}

+0

谢谢!奇迹般有效。我在下面发布我的代码供其他人使用。 – 2011-03-15 00:08:21

1

对于任何需要代码检查的字符串中存在的字符串,这是我的代码感谢fbrereto。本实施例中检查是否包含在字符串(字符串数组)的数组的任何字符串可以一个字符串(myString的)中找到:

int count = [stringArray count]; 

for (NSUInteger x = 0; x < count; ++x) { 

    NSRange range = [self.myString rangeOfString:[stringArray objectAtIndex:x]]; 

    if (range.length > 0) { 
     // A match has been found 
     NSLog(@"string match: %@",[stringArray objectAtIndex:x]); 
    } 
} 
+1

请注意,虽然该代码将起作用,但更好的检查是查看range.position!= NSNotFound(当它找不到任何内容时将返回的常量值)。 – 2011-03-15 01:57:11

1

相信这是用于检查是否以下的范围存在(校正响应正确的语法从肯德尔): range.location != NSNotFound

0

渐渐偏离题外话,但我总是爆炸我的琴弦,这意味着只需使用搜索字符串作为重点爆炸它,你可以使用数组数,看看你有多少实例,。

只要有人来自使用“爆炸”将字符串吹到像我这样的数组中的代码语言,我发现自己写的爆炸函数非常有用,那些不使用“爆炸”的字符串错过了:

- (NSMutableArray *) explodeString : (NSString *)myString key:(NSString*) myKey 
{ 
    NSMutableArray *myArray = [[NSMutableArray alloc] init]; 
    NSRange nextBreak = [myString rangeOfString:myKey]; 
    while(nextBreak.location != NSNotFound) 
    { 
     [myArray addObject: [myString substringToIndex:nextBreak.location]]; 
     myString = [myString substringFromIndex:nextBreak.location + nextBreak.length]; 
     nextBreak = [myString rangeOfString:myKey]; 
    } 
    if(myString.length > 0) 
     [myArray addObject:myString]; 

    return myArray; 
} 

是这样工作的:

[self explodeString: @"John Smith|Age: 37|Account Balance: $75.00" key:@"|"]; 

将返回这个数组:

[@"John Smith", @"Age: 37", @"Account Balance: $75.00"]; 

这可以让你快速拉出一个特定的值在一个狭小的空间,就像如果你有一个客户端,你想知道他有多少钱有:

[[self explodeString: clientData key: pipe] objectAtIndex: 1]; 

,或者如果你想具体的金额为float:

[[[self explodeString: [[self explodeString: clientData key: pipe] objectAtIndex: 1] key: @": "] objectAtIndex: 2] floatValue]; 

无论如何,我发现数组的方式更容易处理和更灵活,所以这对我很有帮助。此外,您可以通过一点努力为您的私有库创建一个“可爆炸字符串”数据类型,以便您将其当作字符串对待或返回基于密钥的索引值。

ExplodableString *myExplodableString; 
myExplodableString.string = @"This is an explodable|string"; 
NSString *secondValue = [myExplodableString useKey: @"|" toGetValue: index];