Swift - 有没有办法在连接字符串中包含单引号(')?

Posted

技术标签:

【中文标题】Swift - 有没有办法在连接字符串中包含单引号(\')?【英文标题】:Swift - Is there a way to include single quotes (') in a concatenated string?Swift - 有没有办法在连接字符串中包含单引号(')? 【发布时间】:2021-01-23 06:23:03 【问题描述】:

我已经搜索了答案,但不幸的是,我尝试过的任何方法都不起作用。 我的情况如下: 我有一组关键字,我正在构建一个 NSPredicate 以过滤来自 CoreData 的数据。下面的代码:

var strKeywordsOrFilter = "(1 == 1)" //just an initial true statement to assist with the OR conditional
for intIndex in 0...pInputWords.count - 1

    let strKeyword = "'" + pInputWords[intIndex] + "'"
    strKeywordsOrFilter = strKeywordsOrFilter + " OR (imageDescr CONTAINS[c] " + strKeyword + ")"

imageDescr 是我的 CoreData 中的实体属性之一。 我想要完成的是为数组pInputWords 中存在的尽可能多的关键字创建一个连接的 OR 条件字符串。 当我调试打印变量strKeywordsOrFilter 时,它在任何单引号字符之前不包含任何反斜杠,例如

(1 == 1) OR (imageDescr CONTAINS[c]  'camping') OR (imageDescr CONTAINS[c]  'lake')

但是当它到达“谓词”命令时是同一个变量,它在每个单引号之前都包含反斜杠,例如

(1 == 1) OR (imageDescr CONTAINS[c]  \'camping\') OR (imageDescr CONTAINS[c]  \'lake\')

我尝试了许多解决方法,但似乎没有什么能摆脱“\”。 任何帮助将不胜感激,因为我真的被卡住了!

【问题讨论】:

“当它到达“谓词”命令时”是什么意思? 【参考方案1】:

无需手动构建查询,也无需担心引号。您可以改用复合谓词和标准 predicate formatting(%@ 用于值,%K 用于键):

let predicates = pInputWords.map  word in
    NSPredicate(format: "imageDescr CONTAINS[c] %@", word)


let finalPredicate = NSCompoundPredicate(orPredicateWithSubpredicates: predicates)

// Which gives:
// imageDescr CONTAINS[c] "camping" OR imageDescr CONTAINS[c] "lake"

ps。您的查询字符串在馈送到谓词时会产生相同的结果,这似乎很好

【讨论】:

嗨 Alladinian,出色的解决方案。它工作得很好。非常感谢,非常感谢:) @sugarakis 感谢您的客气话!很高兴这对您有所帮助。

以上是关于Swift - 有没有办法在连接字符串中包含单引号(')?的主要内容,如果未能解决你的问题,请参考以下文章

我的Python之旅第二天

Python学习之单引号双引号三引号

oracle 字符串 单引号

sql语句中有单引号怎么办

mysql 进行update时,要更新的字段中有单引号或者双引号导致不能批量生成sql的问题

sql语句插入的数据中含有单引号怎么办?