2011-07-22 3 views
1

私は複数の行からなる文字列を持っています。例:X Y Zobj-cの文字列内の行を検索

LINE3 D E F

どのように私は、その文字列にYを検索し、行全体を取得することができます

LINE1 A B C

LINE2?その後、

NSArray *lines = [myString componentsSeparatedByString:@"\n"]; 

そしてラインを検索:

for (NSString *line in lines) { 
    NSRange *range = [line rangeOfString:@"Y"]; 
    if (range.length > 0) { 
     // do something 
    } 
} 

答えて

3

一つの方法は、最初のアップラインに文字列を分割することであるLINE2 XYZとして出力を取得したいと思いあなたがiOS 4.0以降を使用している場合は、enumerateLinesUsingBlockを使用することができます。

__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 
0

代替だから私は

+0

のようないくつかのことを行ってすることができます:私はいくつかのものに少しアドバイスを必要としています。あなたは私を助けることができます ? – Legolas

+0

http://stackoverflow.com/questions/6792069/i-need-expert-advice-on-this-implementation – Legolas

0

あなたは@Deepakねえ、この

- (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; 
} 
関連する問題