试图在 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]];
我有一个路径可能包含空格,我稍后想将其作为参数传递给 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]];