检查字符串
回答
尝试使用rangeOfString:
NSRange result = [strOne rangeOfString:strTwo];
从文档:
返回
NSRange
结构在第一次出现aString
的接收器中给出位置和长度。如果未找到aString或为空(@""
),则返回{NSNotFound, 0}
。
对于任何需要代码检查的字符串中存在的字符串,这是我的代码感谢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]);
}
}
请注意,虽然该代码将起作用,但更好的检查是查看range.position!= NSNotFound(当它找不到任何内容时将返回的常量值)。 – 2011-03-15 01:57:11
相信这是用于检查是否以下的范围存在(校正响应正确的语法从肯德尔): range.location != NSNotFound
渐渐偏离题外话,但我总是爆炸我的琴弦,这意味着只需使用搜索字符串作为重点爆炸它,你可以使用数组数,看看你有多少实例,。
只要有人来自使用“爆炸”将字符串吹到像我这样的数组中的代码语言,我发现自己写的爆炸函数非常有用,那些不使用“爆炸”的字符串错过了:
- (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];
谢谢!奇迹般有效。我在下面发布我的代码供其他人使用。 – 2011-03-15 00:08:21