Вот фрагмент кода, который принимает строку (NSString или NSAttributedString) input
, представляющую командную строку, и разбирает ее на две строки, команду cmd
и аргументы args
:
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 = @"";
Кажется, это работает, но волшебная нить - довольно абсурдный взлом. Кроме того, я совсем не уверен, что с авто-релизами я все делаю правильно.
ДОБАВЛЕНО: решение должно быть устойчивым к начальным пробелам. Кроме того, у меня изначально была строка ввода с именами input
и inStr
. Извините за эту путаницу.
ДОБАВЛЕНО: Я верю, что приведенный выше код прав, что ответы пока не дают, - аргументы args не должны иметь начальных пробелов.