Come posso concatenare le stringhe in Swift?


188

Come concatenare la stringa in Swift?

In Objective-Cci piace

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

o

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

Ma voglio farlo in linguaggio Swift.


1
Il compilatore Swift non può compilare + molto bene. Se hai un paio di + in una frase, potrebbe non riuscire. Usa ()
kelalaka

Risposte:


335

Puoi concatenare le stringhe in diversi modi:

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

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

Puoi anche fare:

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

Sono sicuro che ci sono anche altri modi.

Un po 'di descrizione

letcrea una costante. (un po 'come un NSString). Non è possibile modificarne il valore dopo averlo impostato. Puoi comunque aggiungerlo ad altre cose e creare nuove variabili però.

varcrea una variabile. (una specie di like NSMutableString) in modo da poterne modificare il valore. Ma questo è stato risposto più volte su StackTranslate.it (vedi differenza tra let e var ).

Nota

In realtà lete varsono molto diversi da NSStringe NSMutableStringma aiuta l'analogia.


@ Rajneesh071 Perché dovrebbe dare un errore di compilazione?
Fogmeister,

letcrea una costante. (una specie di NSString). Non è possibile modificarne il valore dopo averlo impostato. Puoi comunque aggiungerlo ad altre cose e creare nuove variabili però. varcreare una variabile. (una specie di NSMutableString) in modo da poterne modificare il valore. Ma questo è stato risposto più volte su SO. Cercadifference between let and var
Fogmeister il

let a = "Hello" let b = "World" let first = a + "," + b Non funziona, questo è ciò che funziona, let first = "(a), (b)". Si otterrà un errore di runtime con il primo metodo
Joseph,

1
@Joseph funziona bene per me. i.imgur.com/T15s4Sp.png Grazie comunque per il voto negativo .
Fogmeister,

@Fogmeister quale versione di xCode stai usando? Non funziona su xCode 6.3 Beta, forse funziona sull'ultima versione
Joseph,

62

È possibile aggiungere una stringa in questi modi:

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

Penso di averli nominati tutti.


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

25
Come nota a margine, questo si chiama interpolazione di stringhe, non concatenazione.
dcastro,

13

Funzionerà anche questo:

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

11

\ questo è usato per aggiungere una stringa a un'altra stringa.

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

Puoi provare anche questo: - + parola chiave.

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

Prova questo codice.


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

9

Molto semplice:

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

OPPURElet ResultString = "\(StringA)\(StringB)"
Chiedi il

Se si utilizza l'interpolazione, il + non è necessario, come ha detto Aks. Se si preferisce utilizzare il +, rimuovere l'interpolazione.
Raghu Teja,

9

Ora puoi utilizzare stringByAppendingString in Swift.

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

5

Xcode non ha accettato le stringhe opzionali aggiunte con una stringa normale. Ho scritto queste estensioni per risolvere quel problema:

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

Quindi puoi chiamarlo come:

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

Tuttavia ora puoi anche fare qualcosa del genere:

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

Che parte? Conosci le estensioni?
Esqarrouth,

Sì, mi chiedevo cosa si guadagna convertendo '+' in 'addString ()'. Se ricordo bene in questo modo ti darei anche un avviso invece di un errore del compilatore se usato su una variabile non mutabile. Altrimenti sta offuscando ciò che sta succedendo e, IMO, nulla è più facile / veloce da leggere di '+'. La verità è che potrebbe esserci una ragione per cui sono cieco ed è per questo che mi
chiedevo

L'ho usato quando xcode non ha accettato l'aggiunta di una stringa opzionale con una stringa normale. non lo fa ancora direttamente ma ora funziona quando forzate a scartare la stringa, quindi questa estensione è inutile atm. lo cancellerò dopo aver letto questo mi ha lasciato un commento
Esqarrouth,

Grazie per la spiegazione :). Non sei sicuro di cosa sia considerato migliore, ma aggiungendo il contesto alla tua risposta avrebbe valore anche se attualmente potrebbe non essere utile come prima.
user3802077

4

Si chiama Interpolazione di stringhe. È un modo per creare NUOVA stringa con COSTANTI, VARIABILI, LETTERALI ed ESPRESSIONI. per esempio:

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

anche

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"

significa anche concatenare i valori di stringa.

Spero che questo ti aiuti.


3

Per stampare la stringa combinata usando

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

oppure String3 memorizza l'output della combinazione di 2 stringhe

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

3

Si può anche usare stringByAppendingFormat in 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

Rapido 4.2

Puoi anche usare un'estensione:

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

Uso:

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

Risultato:

"The Man"
"The"
"Man"

2

Da: Matt Neuburg Book "Fondamenti di programmazione iOS 13 con Swift." :

Per combinare (concatenare) due stringhe, l' approccio più semplice è utilizzare l' operatore + :

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

Questa comoda notazione è possibile perché l' operatore + è sovraccarico: fa una cosa quando gli operandi sono numeri (aggiunta numerica) e un'altra quando gli operandi sono stringhe (concatenazione). L' operatore + viene fornito con un collegamento + = assegnazione ; naturalmente, la variabile sul lato sinistro deve essere stata dichiarata con var:

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

In alternativa a + = , puoi chiamare l' appendice (_ :) metodo di istanza:

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

Un altro modo di concatenare le stringhe è con il metodo unito (separatore :) . Si inizia con una matrice di stringhe da concatenare e si passa la stringa che deve essere inserita tra tutte:

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

1

A tale scopo, è possibile utilizzare SwiftString ( https://github.com/amayne/SwiftString ).

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

DISCLAIMER: ho scritto questa estensione


1

Sono appena passato da Objective-C a Swift (4) e trovo che uso spesso:

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

0

In Swift 5 apple ha introdotto Raw Strings usando i simboli #.

Esempio:

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

il simbolo # è necessario dopo \. Un normale \ (nome) verrà interpretato come caratteri nella stringa.


0

Swift 5

Puoi raggiungerlo utilizzando l' appendingAPI. Ciò restituisce una nuova stringa creata aggiungendo una determinata stringa al ricevitore.

Dettagli API: qui

Utilizzare :

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

Risultato :

Hello
Hello Namaste
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.