Как объединить строку в Swift?
В Objective-C
нам нравится
NSString *string = @"Swift";
NSString *resultStr = [string stringByAppendingString:@" is new Programming Language"];
или же
NSString *resultStr=[NSString stringWithFormat:@"%@ is new Programming Language",string];
Но я хочу сделать это на языке Swift.
Вы можете объединить строки несколькими способами:
let a = "Hello"
let b = "World"
let first = a + ", " + b
let second = "\(a), \(b)"
Вы также можете сделать:
var c = "Hello"
c += ", World"
Я уверен, что есть и другие способы.
Бит описания
let
создает константу. (вроде как NSString
). Вы не можете изменить его значение после его установки. Вы все равно можете добавить его к другим вещам и создать новые переменные.
var
создает переменную. (вроде как NSMutableString
), чтобы вы могли изменить его значение. Но об этом несколько раз ответили на Qaru (см. разницу между let и var).
Примечание
В действительности let
и var
сильно отличаются от NSString
и NSMutableString
, но это помогает аналогию.
Вы можете добавить строку следующим образом:
str += ""
str = str + ""
str = str + str2
str = "" + ""
str = "\(variable)"
str = str + "\(variable)"
Я думаю, что я назвал их всех.
var language = "Swift"
var resultStr = "\(language) is new Programming Language"
Это тоже будет работать:
var string = "swift"
var resultStr = string + " is a new Programming Language"
\ это используется для добавления одной строки в другую строку.
var first = "Hi"
var combineStr = "\(first) Start develop app for swift"
Вы также можете попробовать: - + ключевое слово.
var first = "Hi"
var combineStr = "+(first) Start develop app for swift"
Попробуйте этот код.
let the_string = "Swift"
let resultString = "\(the_string) is a new Programming Language"
Теперь вы можете использовать stringByAppendingString в Swift.
var string = "Swift"
var resultString = string.stringByAppendingString(" is new Programming Language")
Очень просто:
let StringA = "Hello"
let StringB = "World"
let ResultString = "\(StringA)\(StringB)"
println("Concatenated result = \(ResultString)")
let ResultString = "\(StringA)\(StringB)"
XCode не принимал необязательные строки, добавленные с нормальной строкой. Я написал эти расширения для решения этой проблемы:
extension String {
mutating func addString(str: String) {
self = self + str
}
}
Затем вы можете вызвать его так:
var str1: String?
var str1 = "hi"
var str2 = " my name is"
str1.addString(str2)
println(str1) //hi my name is
Однако теперь вы можете сделать что-то вроде этого:
var str1: String?
var str1 = "hi"
var str2 = " my name is"
str1! += str2
Он называется Интерполяцией строк. Это способ создания новой строки с CONSTANTS, VARIABLE, LITERALS и EXPRESSIONS. для примеров:
let price = 3
let staringValue = "The price of \(price) mangoes is equal to \(price*price) "
также
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"
это также означает объединение значений строк.
Надеюсь, это поможет вам.
Можно также использовать stringByAppendingFormat в 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
Чтобы напечатать комбинированную строку, используя
Println("\(string1)\(string2)")
или String3 хранит вывод комбинации из двух строк
let strin3 = "\(string1)\(string2)"
Для этого вы можете использовать SwiftString (https://github.com/amayne/SwiftString).
"".join(["string1", "string2", "string3"]) // "string1string2string"
" ".join(["hello", "world"]) // "hello world"
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я написал это расширение
Вы также можете использовать расширение:
extension Array where Element == String? {
func compactConcate(separator: String) -> String {
return self.compactMap { $0 }.filter { !$0.isEmpty }.joined(separator: separator)
}
}
Использование:
label.text = [m.firstName, m.lastName].compactConcate(separator: " ")
Результат:
"The Man"
"The"
"Man"
Я только что переключился с Objective-C на Swift (4), и я обнаружил, что часто использую:
let allWords = String(format:"%@ %@ %@",message.body!, message.subject!, message.senderName!)