web-dev-qa-db-fra.com

Comment concaténer des chaînes dans Swift?

Comment concaténer une chaîne dans Swift?

Dans Objective-C nous aimons

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

ou

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

Mais je veux le faire en langage Swift.

167
Rajneesh071

Vous pouvez concaténer des chaînes de plusieurs façons:

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

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

Vous pouvez aussi faire:

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

Je suis sûr qu'il y a plus de moyens aussi.

Bit de description

let crée une constante. (un peu comme un NSString). Vous ne pouvez pas changer sa valeur une fois que vous l'avez définie. Vous pouvez toujours l'ajouter à d'autres choses et créer de nouvelles variables.

var crée une variable. (un peu comme NSMutableString) afin que vous puissiez en changer la valeur. Mais cela a été répondu plusieurs fois à Stack Overflow, (voir différence entre let et var).

Remarque

En réalité, let et var sont très différents de NSString et NSMutableString, mais cela aide l'analogie.

303
Fogmeister
var language = "Swift" 
var resultStr = "\(language) is new Programming Language"
28
yoeriboven

Cela fonctionnera aussi:

var string = "Swift"
var resultStr = string + " is a new Programming Language"
12
CW0007007

\ this est utilisé pour ajouter une chaîne à une autre chaîne.

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

Vous pouvez aussi essayer ceci: - + mot-clé.

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

Essayez ce code.

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

Très simple:

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

Vous pouvez maintenant utiliser stringByAppendingString dans Swift.

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

XCode n'accepte pas les chaînes facultatives ajoutées avec une chaîne normale. J'ai écrit cette extension pour résoudre ce problème:

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

Ensuite, vous pouvez l'appeler comme suit:

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

Cependant, vous pouvez maintenant faire quelque chose comme ceci:

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

C'est ce qu'on appelle l'interpolation de chaîne . C'est un moyen de créer une nouvelle chaîne avec CONSTANTS, VARIABLE, LITERALS et EXPRESSIONS . pour des exemples:

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

également 

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"

cela signifie également concaténer des valeurs de chaîne.

J'espère que cela vous aide. 

4
Anil Gupta

On peut aussi utiliser stringByAppendingFormat dans 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
3
Pushpa

Pour imprimer la chaîne combinée à l'aide de 

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

ou String3 stocke la sortie de la combinaison de 2 chaînes

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

Vous pouvez utiliser SwiftString ( https://github.com/amayne/SwiftString ) pour le faire.

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

AVERTISSEMENT: j'ai écrit cette extension

2
eurobrew

Je viens de passer d'Objective-C à Swift (4), et je constate que j'utilise souvent:

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

Dans Swift 5 Apple a introduit les chaînes brutes utilisant des symboles #.

Exemple:

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

le symbole # est nécessaire après \. Un\(nom) normal sera interprété comme des caractères dans la chaîne.

0
Yogendra Singh

Swift 4.2

Vous pouvez également utiliser une extension:

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

Utilisation:

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

Résultat:

"The Man"
"The"
"Man"
0
Nik Kov