目标 C:用单反斜杠替换双反斜杠
Posted
技术标签:
【中文标题】目标 C:用单反斜杠替换双反斜杠【英文标题】:Objective C: Replace double backslash with a single backslash 【发布时间】:2016-10-25 09:08:17 【问题描述】:我正在尝试将包含双反斜杠的字符串替换为只有一个反斜杠的字符串,例如:
\\This\\Is\\Not\\Working
收件人:
\This\Is\Not\Working
使用:
str = [str stringByReplacingOccurrencesOfString:@"\\\\" withString@"\\"];
但由于某种原因,字符串每次都保持不变(带有双反斜杠)。我在这里做错了什么?
【问题讨论】:
为什么这被否决了? :0 你的字符串就像 NSString *Str = @"\\\\This\\\\Is\\\\Not\\\\Working"; ? 可能是因为它不是真正的错误,而是对 single 斜杠字符的完全误解,它总是由 double 斜杠表示当您打印值时调试控制台,或者当您想在字符串中插入 single 斜杠时,您始终需要键入 double 斜杠以 escape 斜杠字符特殊作用域。 【参考方案1】:很遗憾,我误解了控制台日志输出。字符串很好,调试器只是将单斜杠显示为双斜杠。 (我想是为了逃避目的)。
【讨论】:
【参考方案2】:下面几行代码没问题:
NSString *str=@"\\This\\Is\\Not\\Working";
str = [str stringByReplacingOccurrencesOfString:@"\\\\" withString@"\\"];
只需通过NSLog
或打印检查值,因为在调试控制台中,斜杠表示为双斜杠。
查看图片以获得更清晰的理解:
【讨论】:
【参考方案3】:NSString *Str = @"\\This\\Is\\Not\\Working";
NSLog(@"%@",Str);// print:-\This\Is\Not\Working
Str = [Str stringByReplacingOccurrencesOfString:@"\\\\" withString:@"\\"];// in this no replace occurres
NSLog(@"%@",Str); // print:-\This\Is\Not\Working
NSString *Str1 = @"\\\\This\\\\Is\\\\Not\\\\Working";
NSLog(@"%@",Str1);// print:-\\This\\Is\\Not\\Working
Str1 = [Str1 stringByReplacingOccurrencesOfString:@"\\\\" withString:@"\\"];
NSLog(@"%@",Str1);// print:-\This\Is\Not\Working
【讨论】:
【参考方案4】:试试这个:
NSString *str = @"\\This\\Is\\Not\\Working";
str = [str stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"];
NSLog(@"%@", [str stringByReplacingOccurrencesOfString:@"\\\\" withString:@"\\"]);
第一行是您的用户输入。
第二行将双反斜杠用户输入字符串转换为四个反斜杠字符串
第三行简单地将四个反斜杠替换为两个反斜杠,从而打印单个反斜杠
【讨论】:
以上是关于目标 C:用单反斜杠替换双反斜杠的主要内容,如果未能解决你的问题,请参考以下文章