Objective c 在obj-c中搜索字符串中的行
我有一个由多行组成的字符串。例: 线路1 A B C 第2行X Y Z 线路3 D E FObjective c 在obj-c中搜索字符串中的行,objective-c,cocoa,Objective C,Cocoa,我有一个由多行组成的字符串。例: 线路1 A B C 第2行X Y Z 线路3 D E F 如何在该字符串中搜索Y并获得整行?因此,我想将输出设为line2 X Y Z一种方法是首先将字符串分成几行: NSArray *lines = [myString componentsSeparatedByString:@"\n"]; 然后搜索以下行: for (NSString *line in lines) { NSRange *range = [line rangeOfString:@"Y
如何在该字符串中搜索Y并获得整行?因此,我想将输出设为line2 X Y Z一种方法是首先将字符串分成几行:
NSArray *lines = [myString componentsSeparatedByString:@"\n"];
然后搜索以下行:
for (NSString *line in lines) {
NSRange *range = [line rangeOfString:@"Y"];
if (range.length > 0) {
// do something
}
}
如果您使用的是iOS 4.0或更高版本,您可以使用
enumerateLinesUsingBlock
,这是Caleb回答的另一种选择
__block NSString * theLine;
[lines enumerateLinesUsingBlock:^(NSString * line, BOOL * stop){
NSRange range = [line rangeOfString:@"Y"];
if ( range.location != NSNotFound ) {
theLine = [line retain];
*stop = YES;
}
}];
/* Use `theLine` for something */
[theLine release]; // Relinquish ownership
你可以做这样的事
- (NSString *)LineTextFinder:(NSString*)inData Serach:(char)inSearch LineDelimiter:(char)inChar
{
int lineStart = 0;
int lineEnd =0;
int i = 0;
BOOL found = NO;
while (1)
{
if(i > [inData length])
{
lineStart = lineEnd;
lineEnd = i;
break;
}
if (inChar == [inData characterAtIndex:i])
{
lineStart = lineEnd;
lineEnd = i;
//we can brack only when we travell end of found line
if (found)
{
break;
}
}
if(inSearch == [inData characterAtIndex:i])
{
found = YES;
}
i++;
}
NSString *returnStr = nil;
if ((found))
{
NSRange splitRange = {lineStart,(lineEnd-lineStart)};
returnStr = [inData substringWithRange:splitRange];
}
return returnStr;
}
嘿@Deepak:我需要一些建议。你能帮我吗?