Wie verkette ich einen String in Swift?
In Objective-C
gefällt uns
NSString *string = @"Swift";
NSString *resultStr = [string stringByAppendingString:@" is new Programming Language"];
oder
NSString *resultStr=[NSString stringWithFormat:@"%@ is new Programming Language",string];
Aber ich möchte das in Swift tun.
Sie können Strings auf verschiedene Arten verketten:
let a = "Hello"
let b = "World"
let first = a + ", " + b
let second = "\(a), \(b)"
Sie könnten auch tun:
var c = "Hello"
c += ", World"
Ich bin sicher, es gibt auch mehr Möglichkeiten.
Bit der Beschreibung
let
erstellt eine Konstante. (wie eine NSString
). Sie können den Wert nicht mehr ändern, wenn Sie ihn festgelegt haben. Sie können es dennoch anderen Dingen hinzufügen und neue Variablen erstellen.
var
erstellt eine Variable. (wie NSMutableString
), damit Sie den Wert ändern können. Dies wurde jedoch mehrmals beim Stack Overflow beantwortet (siehe Unterschied zwischen let und var).
Hinweis
In Wirklichkeit sind let
und var
sehr verschieden von NSString
und NSMutableString
, aber es hilft der Analogie.
Sie können eine Zeichenfolge folgendermaßen hinzufügen:
str += ""
str = str + ""
str = str + str2
str = "" + ""
str = "\(variable)"
str = str + "\(variable)"
Ich glaube, ich habe sie alle benannt.
var language = "Swift"
var resultStr = "\(language) is new Programming Language"
Das wird auch funktionieren:
var string = "Swift"
var resultStr = string + " is a new Programming Language"
\ Damit wird eine Zeichenfolge an eine andere Zeichenfolge angehängt.
var first = "Hi"
var combineStr = "\(first) Start develop app for Swift"
Sie können dies auch versuchen: - + Schlüsselwort.
var first = "Hi"
var combineStr = "+(first) Start develop app for Swift"
Versuchen Sie diesen Code.
let the_string = "Swift"
let resultString = "\(the_string) is a new Programming Language"
Sehr einfach:
let StringA = "Hello"
let StringB = "World"
let ResultString = "\(StringA)\(StringB)"
println("Concatenated result = \(ResultString)")
Sie können jetzt stringByAppendingString in Swift verwenden.
var string = "Swift"
var resultString = string.stringByAppendingString(" is new Programming Language")
XCode akzeptierte keine optionalen Zeichenfolgen, die mit einer normalen Zeichenfolge hinzugefügt wurden. Ich habe diese Erweiterungen geschrieben, um dieses Problem zu lösen:
extension String {
mutating func addString(str: String) {
self = self + str
}
}
Dann kannst du es so nennen:
var str1: String?
var str1 = "hi"
var str2 = " my name is"
str1.addString(str2)
println(str1) //hi my name is
Du könntest jetzt aber auch so etwas machen:
var str1: String?
var str1 = "hi"
var str2 = " my name is"
str1! += str2
Es wird als String Interpolation ..__ bezeichnet. Es ist eine Möglichkeit, NEUE Zeichenfolge mit CONSTANTS, VARIABLE, LITERALS und EXPRESSIONS ..__ zu erstellen. zum Beispiel:
let price = 3
let staringValue = "The price of \(price) mangoes is equal to \(price*price) "
ebenfalls
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"
es bedeutet auch das Verketten von String-Werten.
Hoffe das hilft dir.
In Swift kann auch stringByAppendingFormat verwendet werden.
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
So drucken Sie die kombinierte Zeichenfolge mit
Println("\(string1)\(string2)")
oder String3 speichert die Ausgabe einer Kombination aus zwei Zeichenfolgen
let strin3 = "\(string1)\(string2)"
Sie können dazu SwiftString ( https://github.com/amayne/SwiftString ) verwenden.
"".join(["string1", "string2", "string3"]) // "string1string2string"
" ".join(["hello", "world"]) // "hello world"
HAFTUNGSAUSSCHLUSS: Ich habe diese Erweiterung geschrieben
Ich habe gerade von Objective-C zu Swift (4) gewechselt und finde, dass ich häufig verwende:
let allWords = String(format:"%@ %@ %@",message.body!, message.subject!, message.senderName!)
In Swift 5 Apple werden Raw Strings mit # -Symbolen eingeführt.
Beispiel:
print(#"My name is "XXX" and I'm "28"."#)
let name = "XXX"
print(#"My name is \#(name)."#)
nach\ist das Symbol # erforderlich. Ein regulärer\(Name) wird als Zeichen in der Zeichenfolge interpretiert.
Sie können auch eine Erweiterung verwenden:
extension Array where Element == String? {
func compactConcate(separator: String) -> String {
return self.compactMap { $0 }.filter { !$0.isEmpty }.joined(separator: separator)
}
}
Benutzen:
label.text = [m.firstName, m.lastName].compactConcate(separator: " ")
Ergebnis:
"The Man"
"The"
"Man"