gpt4 book ai didi

objective-c - 将 NSString 拆分为多个命令行参数

转载 作者:行者123 更新时间:2023-12-03 17:46:55 30 4
gpt4 key购买 nike

我在我的应用程序中收到一个命令行字符串,并且我正在尝试与 NSTask 一样运行。我可以将其转换为 C 字符串并使用系统运行它。

system([commandlineStr cStringUsingEncoding:NSUTF8StringEncoding]);

但我更喜欢使用 NSTask。为了作为 NSTask 运行,我需要将字符串拆分为命令和参数数组。使用空格分割不起作用,因为中间可能存在带有空格的参数。目前它们要么被转义,要么被引用。例如:

cp "~/File with spaces" ~/Folder\ with\ spaces

是否有内置方法可以将字符串拆分为多个参数或为其编写自定义解析逻辑。

最佳答案

您尝试解析的格式是 shell 命令行,有一个程序在这方面相当擅长 - shell。如果您确实选择自己解析它,您的工作就不会完成 - 您仍然需要找到要运行的程序。 shell 通过获取示例中的命令名称 cp 并使用一组路径搜索匹配的程序来实现此目的。要复制此内容,您必须执行相同的搜索。

有一种更简单的方法,shell 本身就是一个可以使用 NSTask 调用的程序,并且 shell 有一个选项 -c,它需要一个字符串作为参数,并解析该字符串值并将其作为命令行执行。因此,您可以使用 NSTask,将第一个参数作为 @"-c" 传递,第二个参数作为您拥有的字符串传递。这将为您处理所有事情 - 空格、转义符、管道、重定向等等。

HTH

关于objective-c - 将 NSString 拆分为多个命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52664386/

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