2015-01-27 2 views
1

Swift에서 문자열 보간법에 큰 따옴표를 사용할 수 있습니까?(Swap에서) 문자열 보간법에서 큰 따옴표 사용

let s = "\(n) \(capitalized ? "H" : "h")ours" 

합니다 (documentation에 주에 부합되는) "Unexpected '"' character in string interpolation을 생산하지만, 나 또한 지금까지 내부 따옴표를 이스케이프 여러 시도와 어떤 성공을 했어.

문자열 삽입시 큰 따옴표를 사용할 수 있습니까? 그렇다면 어떻게해야합니까?

+0

가능한 복제본 [신속 문자열 보간에서 문자열/문자 리터럴을 사용할 수 있습니까?] (http://stackoverflow.com/questions/25245820/can-you-use-string-character-literals-within-swift-string) -interpolation) –

답변

1

@Daniel 대답은 ​​좋지만, 귀하의 경우에는 builtin capitalizedString 메소드를 사용할 수 있습니다.

let s = "hours".capitalizedString 

또는

let s = "\n hours".capitalizedString 

이 방법

각 단어의 첫 글자를 대문자로. 편집 : 보간 할 때 원래의 코드는 이제 작동 있도록

let s = (capitalized ? "hours".capitalizedString : "hours") 
+0

그래서 간단 :) Thx. – Drux

+0

그러나 자본화 된 매개 변수에 따라 문자열을 대문자로 사용하고 싶지 않았습니까? 귀하의 솔루션은 항상 그것을 자본화합니다. –

+0

네 말이 맞다. 나는 삼원 항을 더했다. – LastMove

0

\를 사용하여 문자를 이스케이프 처리 할 수 ​​있지만 문자열 보간에서이 방식으로 삼진 연산자를 사용할 수 없다고 생각합니다. 그래서 변수에 capitalized ? "H" : "h"을 넣으라고 제안하면 작동합니다.

당신은 문자열 보간에서 삼항 연산자를 사용할 수 있습니다 업데이트,하지만 당신은 변수, 또는 상부와 소문자 시간에 전체 표현식을 놓아야합니다, 그래서 당신은 거기에 문자열 리터럴을 사용할 수 없습니다.

+0

설명서의 참고 사항 : "보간 문자열 내에 괄호 안에 쓰는 표현식은 이스케이프 처리되지 않은 큰 따옴표 (") 또는 백 슬래시 (\)를 포함 할 수 없으며 캐리지 리턴이나 줄 바꿈을 포함 할 수 없습니다. " * 이중 따옴표와 백 슬래시를 이스케이프 처리하여 * 허용 할 수는 있지만 어쩌면 그렇지 않을 수도 있습니다. – Drux

+0

@Drux 그렇습니다.하지만 문서에 잘못된 것을 알았습니다. 이중 따옴표 안에 " "괄호 안쪽"이 아니므로 두 번 qoutes 사이에 이스케이프 처리를 할 수는 있지만 하나만 넣을 수는 없습니다. –

2

스위프트 2.1 이후 우리는 따옴표를 사용할 수 있습니다.

관련 문제