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
다음을 사용하여 달성할 수 있습니다.appending
API. 지정된 문자열을 수신기에 추가하여 만든 새 문자열을 반환합니다.
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
'programing' 카테고리의 다른 글
문자열 C#의 줄 바꿈 치환 (0) | 2023.04.12 |
---|---|
NSMutable 딕셔너리에 액세스하기 위한 Objective-C의 각 루프에 대해 (0) | 2023.04.12 |
SQL Server에서 INSER JOIN을 사용하여 삭제하려면 어떻게 해야 합니까? (0) | 2023.04.12 |
WPF 버튼의 디폴트 마우스 오버 효과를 삭제하려면 어떻게 해야 합니까? (0) | 2023.04.12 |
어떻게 하면 한 사용자의 커밋만 git 로그를 볼 수 있나요? (0) | 2023.04.12 |