Bagaimana cara menyatukan string dalam Swift?


188

Bagaimana cara menggabungkan string di Swift?

Di Objective-Ckami suka

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

atau

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

Tetapi saya ingin melakukan ini dalam bahasa Swift.


1
Kompiler Swift tidak dapat mengkompilasi + dengan sangat baik. Jika Anda memiliki tanda + dalam sebuah kalimat, maka kalimat itu mungkin gagal. Gunakan ()
kelalaka

Jawaban:


335

Anda dapat menggabungkan string dengan beberapa cara:

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

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

Anda juga bisa:

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

Saya yakin ada lebih banyak cara juga.

Sedikit deskripsi

letmenciptakan konstanta. (semacam an NSString). Anda tidak dapat mengubah nilainya setelah Anda menetapkannya. Anda masih dapat menambahkannya ke hal lain dan membuat variabel baru.

varmenciptakan variabel. (semacam suka NSMutableString) sehingga Anda dapat mengubah nilai itu. Tetapi ini telah dijawab beberapa kali di Stack Overflow, (lihat perbedaan antara let dan var ).

Catatan

Pada kenyataannya letdan varyang sangat berbeda dari NSStringdan NSMutableStringtetapi membantu analogi.


@ Rajneesh071 Mengapa ini memberikan kesalahan waktu kompilasi?
Fogmeister

letmenciptakan konstanta. (semacam NSString). Anda tidak dapat mengubah nilainya setelah Anda menetapkannya. Anda masih dapat menambahkannya ke hal lain dan membuat variabel baru. varbuat variabel. (semacam suka NSMutableString) sehingga Anda dapat mengubah nilai itu. Tetapi ini telah dijawab beberapa kali pada SO. Looks untukdifference between let and var
Fogmeister

let a = "Hello" let b = "World" let first = a + "," + b Tidak berfungsi, ini yang berhasil, biarkan dulu = "(a), (b)". Anda akan mendapatkan kesalahan runtime dengan metode pertama
Joseph

1
@ Joseph bekerja dengan baik untuk saya. i.imgur.com/T15s4Sp.png Terima kasih atas suaranya yang turun.
Fogmeister

@Fogmeister versi xCode apa yang Anda gunakan? Tidak bekerja di xCode 6.3 Beta, mungkin itu bekerja pada versi terbaru
Joseph

62

Anda dapat menambahkan string dengan cara ini:

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

Saya pikir saya menamai mereka semua.


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

25
Sebagai catatan, ini disebut interpolasi string, bukan penggabungan.
dcastro

13

Ini juga akan bekerja:

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

11

\ Ini sedang digunakan untuk menambahkan satu string ke string lain.

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

Anda dapat mencoba ini juga: - + kata kunci.

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

Coba kode ini.


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

9

Sangat sederhana:

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

ATAUlet ResultString = "\(StringA)\(StringB)"
Aks

Jika menggunakan interpolasi, + tidak diperlukan, seperti yang disebutkan Aks. Jika Anda lebih suka menggunakan +, hapus interpolasi.
Raghu Teja

9

Anda sekarang dapat menggunakan stringByAppendingString di Swift.

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

5

Xcode tidak menerima string opsional yang ditambahkan dengan string normal. Saya menulis ekstensi ini untuk menyelesaikan masalah itu:

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

Maka Anda bisa menyebutnya seperti:

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

Namun sekarang Anda juga dapat melakukan sesuatu seperti ini:

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

Bagian mana? Apakah Anda terbiasa dengan perluasan?
Esqarrouth

Ya, saya bertanya-tanya apa yang diperoleh dengan mengonversi '+' di 'addString ()'. Jika saya ingat dengan benar cara ini juga akan memberi Anda peringatan bukannya kesalahan kompiler jika digunakan pada variabel yang tidak bisa diubah. Kalau tidak, itu mengaburkan apa yang sedang terjadi dan, IMO, tidak ada yang lebih mudah / lebih cepat untuk dibaca daripada '+'. Kebenarannya adalah mungkin ada alasan saya buta dan itulah sebabnya saya bertanya mengapa cara ini 'direkomendasikan'
user3802077

Saya menggunakan ini ketika xcode tidak menerima penambahan string opsional dengan string normal. itu masih tidak melakukan itu secara langsung tetapi sekarang berfungsi ketika Anda memaksa membuka string, jadi ekstensi ini tidak berguna. saya akan menghapusnya setelah Anda membaca ini meninggalkan saya komentar
Esqarrouth

Terima kasih atas penjelasannya :). Tidak yakin apa yang dianggap lebih baik tetapi dengan menambahkan konteks ke jawaban Anda itu akan bernilai bahkan saat ini mungkin tidak berguna seperti sebelumnya.
user3802077

4

Ini disebut sebagai Interpolasi String. Ini adalah cara membuat string BARU dengan KONSTAN, VARIABEL, SASTRA dan EKSPRESI. sebagai contoh:

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

juga

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"

itu juga berarti menyatukan nilai string.

Semoga ini bisa membantu Anda.


3

Untuk mencetak string gabungan menggunakan

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

atau String3 menyimpan output kombinasi 2 string

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

3

Anda juga dapat menggunakan stringByAppendingFormat di Swift.

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

Cepat 4.2

Anda juga dapat menggunakan ekstensi:

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

Menggunakan:

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

Hasil:

"The Man"
"The"
"Man"

2

Dari: Matt Neuburg Book “Dasar-Dasar Pemrograman iOS 13 dengan Swift.” :

Untuk menggabungkan (menggabungkan) dua string, pendekatan paling sederhana adalah dengan menggunakan operator + :

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

Notasi praktis ini dimungkinkan karena operator + kelebihan beban: ia melakukan satu hal ketika operan adalah angka (penambahan numerik) dan yang lainnya ketika operan adalah string (penggabungan). The operator + dilengkapi dengan + = tugas pintas; secara alami, variabel di sisi kiri harus dideklarasikan dengan var:

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

Sebagai alternatif dari + = , Anda dapat memanggil metode instance append (_ :) :

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

Cara lain untuk menggabungkan string adalah dengan metode join (separator :) . Anda mulai dengan serangkaian string yang akan digabungkan, dan berikan string yang akan dimasukkan di antara semuanya:

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

1

Anda dapat menggunakan SwiftString ( https://github.com/amayne/SwiftString ) untuk melakukan ini.

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

PENOLAKAN: Saya menulis ekstensi ini


1

Saya baru saja beralih dari Objective-C ke Swift (4), dan saya menemukan bahwa saya sering menggunakan:

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

0

In Swift 5 apple telah memperkenalkan Raw Strings menggunakan simbol #.

Contoh:

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

simbol # diperlukan setelah \. Reguler \ (nama) akan ditafsirkan sebagai karakter dalam string.


0

Cepat 5

Anda dapat mencapainya menggunakan appendingAPI. Ini mengembalikan string baru yang dibuat dengan menambahkan string yang diberikan ke penerima.

Detail API: di sini

Gunakan :

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

Hasil :

Hello
Hello Namaste
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.