String (转义)字符串插值中的双引号(Swift格式)

String (转义)字符串插值中的双引号(Swift格式),string,swift,escaping,String,Swift,Escaping,可以在Swift中的字符串插值中使用(转义)双引号吗 let s = "\(n) \(capitalized ? "H" : "h")ours" 在字符串插值中生成“Unexpected'”字符(这与中的注释一致),但到目前为止,我也多次尝试转义内部双引号,但都没有成功 因此,可以在字符串插值中使用(转义)双引号吗?如果可以,如何使用?可以使用\来转义字符,但我认为不能在字符串插值中以这种方式使用三元运算符。 所以我建议把大写?“H”:“H”在变量中,然后它将工作 已更新 可以在字符串插值中使

可以在Swift中的字符串插值中使用(转义)双引号吗

let s = "\(n) \(capitalized ? "H" : "h")ours"
在字符串插值中生成
“Unexpected'”字符(这与中的注释一致),但到目前为止,我也多次尝试转义内部双引号,但都没有成功


因此,可以在字符串插值中使用(转义)双引号吗?如果可以,如何使用?

可以使用\来转义字符,但我认为不能在字符串插值中以这种方式使用三元运算符。 所以我建议把
大写?“H”:“H”
在变量中,然后它将工作

已更新


可以在字符串插值中使用三元运算符,但不能在其中使用字符串文字,因此应将整个表达式放在一个变量中,或者用大写和小写的h。Daniel answer很好,但在您的情况下,可以使用内置的大写方法

let s =  "hours".capitalizedString

此方法将每个单词的第一个字母大写。 编辑:


由于Swift 2.1在插值时可以使用双引号,因此原始代码现在可以工作。

但是他不想根据大写参数将字符串大写吗?您的解决方案总是将其大写。文档中的注释说:“您在插入字符串中的括号内编写的表达式不能包含未转换的双引号(“)或反斜杠(),也不能包含回车符或换行符。“这似乎表明可能允许使用转义双引号和反斜杠,但可能不允许…@Drux是的,这表明了这一点,但我相信文档中的说法是错误的,它们的意思是“内部双引号”而不是“内部圆括号”,因为您可以将转义“在两个QOUTE之间,但不能放置单个QOUTE。可能存在重复的
let s =  "\n hours".capitalizedString
let s =  (capitalized ? "hours".capitalizedString : "hours")