试图在 NSString 对象中转义 space

Trying to escape space in a NSString object

我有一个路径可能包含空格,我稍后想将其作为参数传递给 shell 脚本,在 macOS 上为 运行。为了让它工作,我必须以与 bash 相同的方式转义空格,当我执行命令完成时,使用退格字符。

示例:这是一个开始的路径:

dbHome="/Library/Application Support/MimerSQL"

这是转义空格后我想要的:

dbHome="/Library/Application\ Support/MimerSQL"

为了进行此替换,我这样调用 stringByReplacingOccurrencesOfString

dbHome = [dbHome stringByReplacingOccurrencesOfString:@" " withString:@"\ "];

但这给了我一个编译器警告 ("Unknown escape sequence '\ '") 和一个与原始字符串相同的结果字符串。然后我试图转义退格字符:

dbHome = [dbHome stringByReplacingOccurrencesOfString:@" " withString:@"\ "];

这消除了编译器警告,但结果却产生了与我想要的完全不同的字符串:

dbHome="/Library/Application\ Support/MimerSQL"

所以我卡住了。 :(

底线:如何从“...Application Support...”转到“...Application\Support...”?

你做得对。要实现它,您需要将 @" " 替换为 @"\ ".

你会在调试中看到像

/Library/Application\ Support/MimerSQL

但是当您尝试登录或使用它时,它会如预期的那样。

/Library/Application\ Support/MimerSQL

试试这个代码

        NSString *dbHome=@"/Library/Application Support/MimerSQL";
        NSString *spaceString =@" ";
        NSString *backslash = @"\";
        dbHome = [dbHome stringByReplacingOccurrencesOfString:@" " withString:[NSString stringWithFormat:@"%@%@",backslash,spaceString]];