Swift에서 문자열을 어떻게 연결합니까?


188

Swift에서 문자열을 연결하는 방법은 무엇입니까?

에서 Objective-C우리는 좋아한다

NSString *string = @"Swift";
NSString *resultStr = [string stringByAppendingString:@" is a new Programming Language"];

또는

NSString *resultStr=[NSString stringWithFormat:@"%@ is a new Programming Language",string];

그러나 나는 이것을 스위프트 언어로하고 싶다.


1
Swift 컴파일러는 +를 잘 컴파일 할 수 없습니다. 문장에 +가 두 개 있으면 실패 할 수 있습니다. 사용 ()
kelalaka

답변:


335

문자열을 여러 가지 방법으로 연결할 수 있습니다.

let a = "Hello"
let b = "World"

let first = a + ", " + b
let second = "\(a), \(b)"

당신은 또한 할 수 있습니다 :

var c = "Hello"
c += ", World"

더 많은 방법이 있다고 확신합니다.

설명의 비트

let상수를 만듭니다. (과 같은 종류 NSString). 일단 설정 한 후에는 값을 변경할 수 없습니다. 그래도 다른 것에 추가하고 새 변수를 만들 수 있습니다.

var변수를 만듭니다. (와 같은 정렬 NSMutableString) 값을 변경할 수 있습니다. 그러나 이것은 스택 오버플로에서 여러 번 답변되었습니다 ( let과 var의 차이점 참조 ).

노트

실제로 let하고 var있는 매우 다양한 에서 NSString하고 NSMutableString있지만 비유를하는 데 도움이됩니다.


@ Rajneesh071 왜 컴파일 시간 오류가 발생합니까?
Fogmeister

let상수를 만듭니다. (NSString과 같은 종류). 일단 설정 한 후에는 값을 변경할 수 없습니다. 그래도 다른 것에 추가하고 새 변수를 만들 수 있습니다. var변수를 만듭니다. (NSMutableString과 같은 정렬) 값을 변경할 수 있습니다. 그러나 이것은 여러 번 답변되었습니다. 외모에 대한difference between let and var
Fogmeister

let a = "Hello"let b = "World"let first = a + ","+ b 작동하지 않습니다. 이것이 작동하는 것입니다. first = "(a), (b)"입니다. 첫 번째 방법으로 런타임 오류가 발생합니다.
Joseph

1
@Joseph가 잘 작동합니다. i.imgur.com/T15s4Sp.png 다운 투표에 감사드립니다.
Fogmeister

@Fogmeister 어떤 xCode 버전을 사용하고 있습니까? xCode 6.3 베타, 최신 버전에서 작동하지 않음
Joseph

62

다음과 같은 방법으로 문자열을 추가 할 수 있습니다.

  • str += ""
  • str = str + ""
  • str = str + str2
  • str = "" + ""
  • str = "\(variable)"
  • str = str + "\(variable)"

나는 그들 모두를 지명했다고 생각한다.


31
var language = "Swift" 
var resultStr = "\(language) is a new programming language"

25
참고로 이것을 문자열 보간이라고하며 연결하지는 않습니다.
dcastro

13

이것도 작동합니다 :

var string = "swift"
var resultStr = string + " is a new Programming Language"

11

이것은 하나의 문자열을 다른 문자열에 추가하는 데 사용됩니다.

var first = "Hi" 
var combineStr = "\(first) Start develop app for swift"

이것을 시도해보십시오 :-+ 키워드.

 var first = "Hi" 
 var combineStr = "+(first) Start develop app for swift"

이 코드를 사용해보십시오.


10
let the_string = "Swift"
let resultString = "\(the_string) is a new Programming Language"

9

매우 간단합니다 :

let StringA = "Hello"
let StringB = "World"
let ResultString = "\(StringA)\(StringB)"
println("Concatenated result = \(ResultString)")

또는let ResultString = "\(StringA)\(StringB)"
Aks

보간을 사용하는 경우 Aks가 언급 한 것처럼 +가 필요하지 않습니다. +를 사용하려면 보간을 제거하십시오.
Raghu Teja

9

이제 Swift에서 stringByAppendingString 을 사용할 수 있습니다 .

var string = "Swift"
var resultString = string.stringByAppendingString(" is new Programming Language")

5

Xcode는 일반 문자열로 추가 된 선택적 문자열을 허용하지 않습니다. 이 문제를 해결하기 위해이 확장 프로그램을 작성했습니다.

extension String {
    mutating func addString(str: String) {
        self = self + str
    }
}

그런 다음 다음과 같이 호출 할 수 있습니다.

var str1: String?
var str1 = "hi"
var str2 = " my name is"
str1.addString(str2)
println(str1) //hi my name is

그러나 이제 다음과 같이 할 수도 있습니다.

var str1: String?
var str1 = "hi"
var str2 = " my name is"
str1! += str2

어느 부분? 익스텐션에 익숙하십니까?
Esqarrouth

예, 'addString ()'에서 '+'를 변환하여 얻는 것이 궁금합니다. 내가 올바르게 기억한다면이 방법은 가변 변수에 사용될 경우 컴파일러 오류 대신 경고를 줄 것입니다. 그렇지 않으면 무슨 일이 일어나고 있는지 혼란스럽고 IMO는 '+'보다 읽기 쉽고 빠르지 않습니다. 진실은 내가 눈을 멀게하는 이유가있을 수 있으며, 이것이 왜이 방법이 '권장'인지 묻는 이유입니다
user3802077

xcode가 일반 문자열로 선택적 문자열을 추가하는 것을 허용하지 않을 때 이것을 사용했습니다. 여전히 직접 수행하지는 않지만 문자열을 강제로 풀 때 작동 하므로이 확장은 쓸모없는 atm입니다. 이 의견을 읽은 후에 삭제하겠습니다.
Esqarrouth

외식에 감사드립니다 :). 무엇이 더 나은지 확실하지 않지만 답변에 컨텍스트를 추가하면 현재까지도 가치가있을 것입니다. 이전만큼 유용하지 않을 수 있습니다.
user3802077

4

이를 문자열 보간이라고합니다. CONSTANTS, VARIABLE, LITERALS 및 EXPRESSIONS를 사용하여 새 문자열을 작성하는 방법입니다. 예를 들어:

      let price = 3
      let staringValue = "The price of \(price) mangoes is equal to \(price*price) "

또한

let string1 = "anil"
let string2 = "gupta"
let fullName = string1 + string2  // fullName is equal to "anilgupta"
or 
let fullName = "\(string1)\(string2)" // fullName is equal to "anilgupta"

또한 문자열 값을 연결하는 것을 의미합니다.

이것이 도움이되기를 바랍니다.


3

를 사용하여 결합 된 문자열을 인쇄하려면

Println("\(string1)\(string2)")

또는 String3은 2 개의 문자열 조합의 출력을 저장합니다.

let strin3 = "\(string1)\(string2)"

3

Swift에서 stringByAppendingFormat을 사용할 수도 있습니다.

var finalString : NSString = NSString(string: "Hello")
finalString = finalString.stringByAppendingFormat("%@", " World")
print(finalString) //Output:- Hello World
finalString = finalString.stringByAppendingFormat("%@", " Of People")
print(finalString) //Output:- Hello World Of People

2

스위프트 4.2

확장을 사용할 수도 있습니다.

extension Array where Element == String? {
    func compactConcate(separator: String) -> String {
        return self.compactMap { $0 }.filter { !$0.isEmpty }.joined(separator: separator)
    }
}

사용하다:

label.text = [m.firstName, m.lastName].compactConcate(separator: " ")

결과:

"The Man"
"The"
"Man"

2

출처 : Matt Neuburg Book“Swift를 사용한 iOS 13 프로그래밍 기본 사항” :

두 문자열 을 결합 (연결) 하려면 가장 간단한 방법+ 연산자 를 사용하는 것 입니다 .

let s = "hello"
let s2 = " world"
let greeting = s + s2

이 편리한 표기법은 + 연산자 가 오버로드 되기 때문에 가능 합니다. 피연산자가 숫자 (숫자 추가) 일 때와 피연산자가 문자열 (연결) 일 때 다른 일을합니다. + 연산자는 함께 제공 + = 할당 바로 가기; 당연히 왼쪽의 변수는 var로 선언되어 있어야합니다.

var s = "hello"
let s2 = " world"
s += s2

AS를 대체+ = , 당신이 호출 할 수 있습니다 APPEND를 (_ : 예 방법 :

var s = "hello"
let s2 = " world"
s.append(s2)

문자열을 연결하는 또 다른 방법은 함께 접합 (:) 분리 방법. 연결할 문자열 배열로 시작하여 모든 문자열 사이에 삽입 할 문자열을 전달합니다.

let s = "hello"
let s2 = "world"
let space = " "
let greeting = [s,s2].joined(separator:space)


1

방금 Objective-C에서 Swift (4)로 전환했으며 자주 사용하는 것으로 나타났습니다.

let allWords = String(format:"%@ %@ %@",message.body!, message.subject!, message.senderName!)

0

Swift 5에서 apple은 # 기호를 사용하여 Raw Strings를 도입했습니다.

예:

print(#"My name is "XXX" and I'm "28"."#)
let name = "XXX"
print(#"My name is \#(name)."#)

\ 다음에 기호 #가 필요합니다. 일반 \ (이름)은 문자열에서 문자로 해석됩니다.


0

스위프트 5

appendingAPI를 사용하여 달성 할 수 있습니다 . 이것은 주어진 문자열을 수신자에 추가하여 만들어진 새로운 문자열을 반환합니다.

API 세부 정보 : here

사용 :

var text = "Hello"
text = text.appending(" Namaste")

결과 :

Hello
Hello Namaste
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.