2012-02-15 16 views
0

私はNSString *paragraph;にN個の単語が入っています。NSStringはNSString内の単語と次の単語を見つける

...
ファーストネーム::デビッド
姓:ジョンソン
...私はデイビッドを発見された行うために必要なもの

、そこでは私が持っていることを保証していますこのストリングからジョンソン。しかし、私はその名前が何であるか分からない(DavidはJohn、Chrisなどかもしれない)

C#で私は名前から始まる行を見つけて、 ""を区切り記号として使用します。しかし、Objective-Cでこれを行う方法については分かりません。

ご協力いただければ幸いです。

答えて

2

私はNSScannerを使用します。このように:

NSString *lastName; 
NSString *firstName; 
NSString *text = @"Foobar\nFirst Name: David\nLast Name: Johnson\nFoobaz\nBarBaz"; 

NSScanner *textScanner = [NSScanner scannerWithString:text]; 

if ([textScanner scanUpToString:@"\nFirst Name: " intoString:NULL]) { 
    [textScanner scanString:@"First Name: " intoString:NULL]; 
    [textScanner scanUpToCharactersFromSet:[NSCharacterSet newlineCharacterSet] intoString:&firstName]; 
} 

// if last name always comes after first name there's no need to do this: 
[textScanner setScanLocation:0]; 

if ([textScanner scanUpToString:@"\nLast Name: " intoString:NULL]) { 
    [textScanner scanString:@"Last Name: " intoString:NULL]; 
    [textScanner scanUpToCharactersFromSet:[NSCharacterSet newlineCharacterSet] intoString:&lastName]; 
}  

NSLog(@"%@ %@", firstName, lastName); 
+0

+1 NSScanner – lawicko

+0

私はこのタスクにNSScannerを使用すべきではないと聞きたいのですが、私はそれらをかなり使用しています。 –

+0

私はこれにNSScannerを使う必要があります**これは私があなたの答えを有用とマークした理由であり、私はそれが受け入れられた答えであるべきだと思います。 +1は[Google +1ボタン](http://www.google.com/+1/button/)のようにスマートな解決策を承認したことを意味します: – lawicko

2

まず、あなたがスペースに基づいて分割し、単語を探すことができます

NSPredicate* firstNamePredicate = [NSPredicate predicateWithFormat:@"SELF beginswith 'First Name:'"]; 
NSArray* filteredArray = [lines filteredArrayUsingPredicate:firstNamePredicate]; 

componentsSeparatedByString

NSArray* lines = [paragraph compontentsSeparatedByString:@"\n"]; 

を使用して行に基づいて文字列を分割その後、あなたは行が姓で始まるどの除外でき

"Name:"トークンの後に続けます。

関連する問題