如何捕捉NSString對象的第一行?捕獲NSString的第一行
我目前正在將整個NSString對象分配給我的textView的標題,但只想分配字符串的第一行。我當前的代碼是這樣的:
self.textView.text = [[managedObject valueForKey:@"taskText"] description];
如何捕捉NSString對象的第一行?捕獲NSString的第一行
我目前正在將整個NSString對象分配給我的textView的標題,但只想分配字符串的第一行。我當前的代碼是這樣的:
self.textView.text = [[managedObject valueForKey:@"taskText"] description];
你想
self.textView.text = [[[[managedObject valueForKey: @"taskText"] description] componentsSeparatedByString: @"\n"] objectAtIndex:0];
如果您定位的iOS 4.0及更高版本,可以使用-[NSString enumerateLinesUsingBlock:]
:
__block NSString *firstLine = nil;
NSString *wholeText = [[managedObject valueForKey:@"taskText"] description];
[wholeText enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) {
firstLine = [[line retain] autorelease];
*stop = YES;
}];
self.textView.text = firstLine;
有什麼解釋爲什麼分配給firstLine時,小保留/自動釋放舞蹈是必要的?我認爲這是由於塊池(?)被刷新,但還沒有讀取任何實際描述的內容。謝謝! – 2011-08-24 01:00:17
另一種方法可能是最有效和直接的:
NSString* str = [[managedObject valueForKey:@"taskText"] description]; self.textView.text = [str substringWithRange:[str lineRangeForRange:NSMakeRange(0, 0)]];
由於'-componentsSeparatedByString:'返回'NSArray'實例,則可以不使用C-陣列'[]'語法。您需要發送'-objectAtIndex:'代替。 – 2011-04-17 23:34:56
另外,由於換行符有多種表示形式,所以應該在'+ [NSCharacterSet newlineCharacterSet]'中使用'-componentsSeparatedByCharactersInSet:'。 – 2011-04-17 23:37:24
如果有10,000行,而您只想剝離第一行而不解析其他9,999行? – wcochran 2017-06-26 15:33:19