Swift中replacingOccurrences方法无效,如何去除字符串反斜杠与换行符?
解决Swift中Apple Pay拼接字符串的转义和换行问题
问题原因
- 调试器显示的
\"是Swift对字符串中双引号的转义显示格式,并非字符串实际包含反斜杠,所以调用replacingOccurrences(of: "\\", with: "")不会产生效果。 - 末尾的
\n是因为定义多行字符串时,末尾保留了换行和缩进空格。
解决方案
1. 优化多行字符串定义(可选)
定义时去掉多余的缩进和换行,从根源避免引入不必要的空白:
let tokenStr = """ {"paymentData":{"data":"\(tokenApplePay.paymentData.data)","signature":"\(tokenApplePay.paymentData.signature)","header":{"publicKeyHash":"\(tokenApplePay.paymentData.header.publicKeyHash)","ephemeralPublicKey":"\(tokenApplePay.paymentData.header.ephemeralPublicKey)","transactionId":"\(tokenApplePay.paymentData.header.transactionId)"},"version":"\(tokenApplePay.paymentData.version)"},"paymentMethod":{"displayName":"\(tokenApplePay.paymentMethod.displayName)","network":"\(tokenApplePay.paymentMethod.network)","type":"\(tokenApplePay.paymentMethod.type)"},"transactionIdentifier":"\(tokenApplePay.transactionIdentifier)"} """
2. 去除首尾空白字符
使用trimmingCharacters方法去掉字符串开头和结尾的所有空白类字符(包括换行、空格、制表符):
let cleanedTokenStr = tokenStr.trimmingCharacters(in: .whitespacesAndNewlines)
3. 处理实际存在的反斜杠(若有)
如果插值的内容中确实自带反斜杠,可在去除空白后再移除反斜杠:
let finalStr = cleanedTokenStr.replacingOccurrences(of: "\\", with: "")
验证说明
调试器打印时可能仍会显示\",但这只是系统的转义显示格式,实际字符串内容中没有反斜杠。可以通过将字符串写入本地文件或发送到后端接口,验证最终的实际内容。
内容的提问来源于stack exchange,提问作者Evg Enii
相关产品推荐
相关产品推荐

