gpt4 book ai didi

objective-c - Cocoa/Objective-C 中的简单字符串解析 : parsing a command line into command and arguments

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:50 24 4
gpt4 key购买 nike

这是一段代码,用于获取表示命令行的字符串(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 = @"";

这似乎可行,但魔法字符串是一个非常荒谬的 hack。另外,我一点也不确定我是否正确地处理了自动发布。

添加:该解决方案还应对初始空白具有鲁棒性。此外,我最初将输入字符串称为 inputinStr。很抱歉造成困惑。

添加:我相信上面的代码正确的一件事是到目前为止答案没有正确的是 args 不应该有任何初始空格。

最佳答案

NSString *cmd;
NSScanner *scanner = [NSScanner scannerWithString:[inStr string]];
[scanner scanUpToCharactersFromSet:[NSCharacterSet
whitespaceAndNewlineCharacterSet]
intoString:&cmd];
NSString *args = [[scanner string] substringFromIndex:[scanner scanLocation]];

您的自动释放没问题,但首先分配字符串是不必要的,因为 NSScanner 通过引用返回一个新字符串。由于 NSScanner 的 charactersToBeSkipped 默认包含空格,因此它不应该被初始空格绊倒。

关于objective-c - Cocoa/Objective-C 中的简单字符串解析 : parsing a command line into command and arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/422242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com