下面是一段代碼,用於獲取表示命令行的字符串(NSString或NSAttributedString)input
並將其解析爲兩個字符串,命令cmd
和參數args
:這似乎工作,但神奇的字符串是一個非常荒謬的黑客Cocoa中的簡單字符串解析/ Objective-C:將命令行解析爲命令和參數
NSString* cmd = [[input mutableCopy] autorelease];
NSString* args = [[input mutableCopy] autorelease];
NSScanner* scanner = [NSScanner scannerWithString:[input string]];
[scanner scanUpToCharactersFromSet:[NSCharacterSet
whitespaceAndNewlineCharacterSet]
intoString:&cmd];
if (![scanner scanUpToString:@"magicstring666" intoString:&args]) args = @"";
。另外,我一點都不確定自己是否正確地使用autoreleases。
ADDED:該解決方案還應該對初始空白有效。另外,我最初有一個叫做input
和inStr
的輸入字符串。對不起,這個混亂。
ADDED:我相信上面的代碼得到正確的答案,迄今爲止的答案是,參數不應該有任何初始空白。
甜!我知道它應該非常簡單。謝謝!我想我們的兩個解決方案對初始空白都不夠健壯,呃?是否有一個簡單的「修剪」功能?另外,在你的解決方案中,沒有新的內存被分配,對嗎? – dreeves 2009-01-07 22:10:05