从剪贴板复制的 swift 字符串中反斜杠撇号转义字符的问题

ali*_*ego 0 character-encoding ios swift

我在使用 AWS AppSync SDK 从 swift 字符串创建突变时遇到问题。仅当我在 textView 中粘贴包含撇号的文本并将其发送到 SDK 时,才会出现此问题。

如果我在 textView 中输入带撇号的文本,然后将该 messageTextView.text 分配给我的突变,它就可以正常工作。

但是,如果我粘贴一些包含撇号的文本,然后将该 messageTextView.text 分配给我的突变,则会返回错误:

[Unable to parse the JSON document: 'Unrecognized character escape ''' (code 39)
 at [Source: (String)"
Run Code Online (Sandbox Code Playgroud)

在创建突变之前,是否有办法从从 textView 获取的 Swift 字符串中删除这些反斜杠转义字符?

我尝试将字符串定义为 String(messageTextView.text) 但这没有帮助。

在 textView 中用撇号输入的完全相同的字符串和从剪贴板复制到 textView 的字符串是不同的。我想知道如何使它们相同。即使粘贴的内容与键入的内容一样。我认为差异在于编码,但我对 Swift 字符串编码了解不够,无法解决该问题。

ali*_*ego 5

如果有人遇到这个问题,问题是粘贴文本的 unicodeScalars 值是:“\'”(撇号)。对于键入的文本,值为“\u{2019}”

因此,为了解决这个问题,我在 textViewDidChange 中执行了以下操作:

textView.text = textView.text.replacingOccurrences(of: "\'", with: "\u{2019}")
Run Code Online (Sandbox Code Playgroud)