programing

Swift에서 문자열을 연결하려면 어떻게 해야 하나요?

codeshow 2023. 4. 12. 22:40
반응형

Swift에서 문자열을 연결하려면 어떻게 해야 하나요?

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];

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

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

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하지만 유추에 도움이 됩니다.

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

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

제가 다 이름을 지은 것 같아요.

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

이것도 동작합니다.

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

\ 이것은 하나의 문자열을 다른 문자열에 추가하기 위해 사용됩니다.

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

- + 키워드도 사용할 수 있습니다.

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

이 코드를 사용해 보세요.

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

매우 심플:

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

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

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

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

이것은 문자열 보간이라고 불립니다.CONSTURES, VARIAL, Literals 및 EXPRESIONSIONS를 사용하여 새 문자열을 만드는 방법입니다. 예:

      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"

문자열 값을 연결하는 의미이기도 합니다.

도움이 되시길 바랍니다.

Objective-C에서 Swift(4)로 전환한 지 얼마 되지 않아 자주 사용하고 있습니다.

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

스위프트 5

다음을 사용하여 달성할 수 있습니다.appendingAPI. 지정된 문자열을 수신기에 추가하여 만든 새 문자열을 반환합니다.

API 상세 : 여기

용도:

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

결과:

Hello
Hello Namaste

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

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

또는 String3은 2개의 스트링 조합의 출력을 저장합니다.

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

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

연결이란 Swift에서 문자열의 조합을 말합니다.문자열에는 텍스트, 정수 또는 이모티콘이 포함될 수 있습니다!문자열 연결에는 여러 가지 방법이 있습니다.몇 가지 예를 들어 보겠습니다.

같은 문자열

+= 사용

기존 String에 추가할 경우 유용합니다.이 기능이 작동하려면 String을 가변 또는 변경할 수 있어야 합니다. 따라서 String을 변수로 선언합니다.예:

var myClassmates = "John, Jane"
myClassmates += ", Mark" // add a new Classmate
// Result: "John, Jane, Mark"

다른 문자열

예를 들어 서로 다른 문자열을 조합하는 경우:

let oldClassmates = "John, Jane" 
let newClassmate = "Mark"

다음 중 하나를 사용할 수 있습니다.

1) + 사용

let myClassmates = oldClassmates + ", " + newClassmate
// Result: "John, Jane, Mark"

각 문자열은 변수 또는 상수일 수 있습니다.값을 한 번만 변경할 경우 상수로 선언합니다.

2) 문자열 보간

let myClassmates = "\(oldClassmates), \(newClassmate)"
// Result: "John, Jane, Mark"

3) 추가

let myClassmates = oldClassmates.appending(newClassmate)
// Result: "John, Jane, Mark"

자세한 것은, 「Swift Book」의 「Strings & Characters」를 참조해 주세요.

업데이트: Swift 5.1에서 테스트 완료

스위프트 4.2

내선번호를 사용할 수도 있습니다.

extension Array where Element == String? {
    func compactConcate(separator: String) -> String {
        return self.compactMap {
            if let unwrappedString = $0,
               unwrappedString.isEmpty {
                return nil
            } else {
                return $0
            }
        }
        .joined(separator: separator)
    }
}

용도:

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

결과:

"The Man"
"The"
"Man"

출처: Matt Neuburg Book "iOS 13 Programming Fundamentals with Swift" :

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

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

편리한 표기법은 + 연산자가 오버로드되어 있기 때문에 가능합니다.오퍼랜드가 숫자(숫자 덧셈)일 때와 오퍼랜드가 문자열(연결)일 때 각각 다른 작업을 수행합니다.+ 연산자에는 += 할당 바로 가기가 함께 제공되며, 왼쪽 변수는 var:

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

+= 대신 append(_:) 인스턴스 메서드를 호출할 수 있습니다.

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

문자열을 연결하는 또 다른 방법 joined(separator:) 메서드를 사용하는 것입니다.연결할 문자열 배열에서 시작하여 모든 문자열 사이에 삽입할 문자열을 전달합니다.

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

Swift 5:

단일 문자열에 문자열 배열

let array = ["Ramana","Meharshi","Awareness","Oneness","Enlightnment","Nothing"]
let joined = array.joined(separator: ",")

신속한 연결 문자열

퍼포먼스에 관한 몇 가지 말

iPhone 7(실제 디바이스), iOS 14, -Onone(디버깅,[대략] 최적화 없음)에서의 UI 테스트 번들

var result = ""
for i in 0...count {
    <concat_operation>
}

카운트 = 5,000

//Append
result.append(String(i))                         //0.007s 39.322kB

//Plus Equal
result += String(i)                              //0.006s 19.661kB

//Plus
result = result + String(i)                      //0.130s 36.045kB

//Interpolation
result = "\(result)\(i)"                         //0.164s 16.384kB

//NSString
result = NSString(format: "%@%i", result, i)     //0.354s 108.142kB

//NSMutableString
result.append(String(i))                         //0.008s 19.661kB

다음 테스트 사용 안 함:

  • 최대 100_000~10s
  • 최대 100_000~10s의 보간
  • NSString > (10_000 -> )

카운트 = 1_000_000

//Append
result.append(String(i))                         //0.566s 5894.979kB

//Plus Equal
result += String(i)                              //0.570s 5894.979kB

//NSMutableString
result.append(String(i))                         //0.751s 5891.694kB

*Int를 문자열로 변환에 대한 주의사항

소스 코드

import XCTest

class StringTests: XCTestCase {
    let count = 1_000_000
    
    let metrics: [XCTMetric] = [
        XCTClockMetric(),
        XCTMemoryMetric()
    ]
    
    let measureOptions = XCTMeasureOptions.default
    
    override func setUp() {
        measureOptions.iterationCount = 5
    }
    
    func testAppend() {
        var result = ""
        measure(metrics: metrics, options: measureOptions) {
            for i in 0...count {
                result.append(String(i))
            }
        }
    }
    
    func testPlusEqual() {
        var result = ""
        measure(metrics: metrics, options: measureOptions) {
            for i in 0...count {
                result += String(i)
            }
        }
    }
    
    func testPlus() {
        var result = ""
        measure(metrics: metrics, options: measureOptions) {
            for i in 0...count {
                result = result + String(i)
            }
        }
    }
    
    func testInterpolation() {
        var result = ""
        measure(metrics: metrics, options: measureOptions) {
            for i in 0...count {
                result = "\(result)\(i)"
            }
        }
    }
    
    //Up to 10_000
    func testNSString() {
        var result: NSString =  ""
        measure(metrics: metrics, options: measureOptions) {
            for i in 0...count {
                result = NSString(format: "%@%i", result, i)
            }
        }
    }
    
    func testNSMutableString() {
        let result = NSMutableString()
        measure(metrics: metrics, options: measureOptions) {
            for i in 0...count {
                result.append(String(i))
            }
        }
    }
}

이를 위해서는 SwiftString(https://github.com/amayne/SwiftString)을 사용할 수 있습니다.

"".join(["string1", "string2", "string3"]) // "string1string2string"
" ".join(["hello", "world"]) // "hello world"

면책사항: 이 확장자는 제가 쓴 것입니다.

Swift 5에서는 애플이 # 기호를 사용한 Raw Strings를 도입했습니다.

예:

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

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

언급URL : https://stackoverflow.com/questions/24034174/how-do-i-concatenate-strings-in-swift

반응형