从字符串中删除单个反斜杠

时间:2016-01-12 00:35:28

标签: ios swift

我从API获取地名的字符串:"Moe\'s Restaurant & Brewhouse"。我希望它只是"Moe's Restaurant & Brewhouse",但如果没有\我无法正确格式化。

我已经看过关于此主题的其他帖子,我已尝试placeName?.stringByReplacingOccurrencesOfString("\\", withString: "")placeName?.stringByReplacingOccurrencesOfString("\'", withString: "'")。我无法得到任何工作。任何想法,所以我可以得到字符串我想要它没有\?非常感谢任何帮助,谢谢!!

1 个答案:

答案 0 :(得分:4)

您报告API正在返回"Moe\'s Restaurant & Brewhouse"。很可能你正在查看Swift词典或类似的东西,它会向你显示该字符串的字符串文字表示。但是根据你打印的方式,字符串最有可能不包含任何反斜杠。

请考虑以下事项:

let string = "Moe's"
let dictionary = ["name": string]
print(dictionary)

那将打印:

  

["姓名":" Moe \']

它只显示"字符串文字"表示。正如the documentation所说:

  

字符串文字可以包含以下特殊字符:

     
      
  • 转义的特殊字符\0(空字符),\\(反斜杠),\t(水平标签),\n(换行),{{1} }(回车),\r(双引号)和\"(单引号)
  •   
  • 任意Unicode标量,写为\',其中\u{n}n - 1位十六进制数,其值等于有效的Unicode代码点
  •   

但请注意,8'之前的反斜杠不是字符串的一部分,而只是打印带有可逃避字符的字符串文字的工件。

如果你这样做:

Moe\'s

它会告诉你那里实际上没有反斜杠:

  

萌' S

同样,如果你检查字符数:

let string2 = dictionary["name"]!
print(string2)

它会正确地报告只有五个字符,而不是六个字符。

(对于它的价值,我认为苹果公司让这更加困惑,因为它有时会打印字符串,好像它们是带有反斜杠的字符串文字,有时候是真正的底层字符串。加上混乱,单引号字符可以在字符串文字中转义,但不一定非。)

注意,如果你的字符串中确实有反斜杠,那么你是正确的,这是删除它的正确方法:

print(dictionary["name"]!.characters.count)

但是在这种情况下,我怀疑你看到的反斜杠是你如何显示它的工件而不是底层字符串中的实际反斜杠。