检查字符串中的字符串

时间:2011-03-14 23:28:11

标签: xcode substring

我正在尝试比较两个字符串

NSString strOne = @"Cat, Dog, Cow";
NSString strTwo = @"Cow";

如何确定strOne是否包含strTwo

4 个答案:

答案 0 :(得分:4)

尝试使用rangeOfString:

NSRange result = [strOne rangeOfString:strTwo];

来自文档:

  

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

答案 1 :(得分:1)

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

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]);
    }
}

答案 2 :(得分:1)

我相信这是检查范围是否存在的正确语法(更正Kendall的响应): range.location != NSNotFound

答案 3 :(得分: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];

或者如果您特意想要将美元金额作为浮点数:

[[[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];