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.

Rajneesh071
sumber
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.

Fogmeister
sumber
@ 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.

Arbitur
sumber
32
var language = "Swift" 
var resultStr = "\(language) is a new programming language"
yoeriboven
sumber
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"
CW0007007
sumber
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.

Jitendra
sumber
10
let the_string = "Swift"
let resultString = "\(the_string) is a new Programming Language"
Bagvendt
sumber
9

Sangat sederhana:

let StringA = "Hello"
let StringB = "World"
let ResultString = "\(StringA)\(StringB)"
println("Concatenated result = \(ResultString)")
Rajesh Loganathan
sumber
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")
Mark Moeykens
sumber
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
Esqarrouth
sumber
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.

Anil Gupta
sumber
3

Untuk mencetak string gabungan menggunakan

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

atau String3 menyimpan output kombinasi 2 string

let strin3 = "\(string1)\(string2)"
Pvni
sumber
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
Pushpa Y
sumber
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"
Nik Kov
sumber
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)
HS Progr
sumber
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

eurobrew
sumber
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!)
Sjakelien
sumber
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.

Yogendra Singh
sumber
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
Vittal Pai
sumber