我有一个路径,其中可能包含一些空间,这些空间我以后想作为参数传递给在macOS上运行的Shell脚本。为了使其正常工作,我必须使用退格字符以与bash执行命令完成时相同的方式来转义空格。
示例:这是开始的路径:
dbHome="/Library/Application Support/MimerSQL"
这是我想在转义空格后拥有的东西:
dbHome="/Library/Application\ Support/MimerSQL"
为了进行此替换,我这样叫stringByReplacingOccurrencesOfString
:
dbHome = [dbHome stringByReplacingOccurrencesOfString:@" " withString:@"\ "];
但这给了我一个编译器警告(“未知转义序列'\'”),并且得到的字符串与原始字符串相同。然后,我尝试这样逃避退格字符:
dbHome = [dbHome stringByReplacingOccurrencesOfString:@" " withString:@"\\ "];
并摆脱了编译器警告,但它导致的字符串与我想要的完全不同:
dbHome="/Library/Application\\ Support/MimerSQL"
所以我被困住了。 :(
底线:如何从“ ...应用程序支持...”转到“ ...应用程序\支持...”?
答案 0 :(得分:2)
尝试此代码
NSString *dbHome=@"/Library/Application Support/MimerSQL";
NSString *spaceString =@" ";
NSString *backslash = @"\\";
dbHome = [dbHome stringByReplacingOccurrencesOfString:@" " withString:[NSString stringWithFormat:@"%@%@",backslash,spaceString]];
答案 1 :(得分:1)
您做对了。为此,您需要将@" "
替换为@"\\ "
。
您将在调试中看到
/Library/Application\\ Support/MimerSQL
但是当您尝试登录或使用它时,它将是预期的。
/Library/Application\ Support/MimerSQL