Как объединить строки в Swift?

Как объединить строку в Swift?

В Objective-C нам нравится

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

или же

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

Но я хочу сделать это на языке Swift.

Ответ 1

Вы можете объединить строки несколькими способами:

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, но это помогает аналогию.

Ответ 2

Вы можете добавить строку следующим образом:

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

Я думаю, что я назвал их всех.

Ответ 3

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

Ответ 4

Это тоже будет работать:

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

Ответ 5

\ это используется для добавления одной строки в другую строку.

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

Вы также можете попробовать: - + ключевое слово.

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

Попробуйте этот код.

Ответ 6

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

Ответ 7

Очень просто:

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

Ответ 8

Теперь вы можете использовать stringByAppendingString в Swift.

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

Ответ 9

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

Ответ 10

Он называется Интерполяцией строк. Это способ создания новой строки с 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"

это также означает объединение значений строк.

Надеюсь, это поможет вам.

Ответ 11

Чтобы напечатать комбинированную строку, используя

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

или String3 хранит вывод комбинации из двух строк

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

Ответ 12

Можно также использовать 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

Ответ 13

Для этого вы можете использовать SwiftString (https://github.com/amayne/SwiftString).

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

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я написал это расширение

Ответ 14

Swift 4.2

Вы также можете использовать расширение:

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"

Ответ 15

Я только что переключился с Objective-C на Swift (4), и я обнаружил, что часто использую:

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

Ответ 16

В Swift 5 Apple вводит необработанные строки, используя символы #.

Пример:

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

символ # необходим после \. Обычное\(имя) будет интерпретироваться как символы в строке.

Ответ 17

От: Matt Neuburg Book 'Основы программирования iOS 13 с помощью Swift.' :

Для объединения (объединения) двух строк самый простой подход заключается в использовании оператора +:

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

Это удобное обозначение возможно потому, что оператор + перегружен: он выполняет одно, когда операндами являются числа (сложение чисел), и другое, когда операндами являются строки (конкатенация). Оператор + имеет ярлык + = назначение; естественно, переменная слева должна быть объявлена с помощью var:

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

В качестве альтернативы to + = вы можете вызвать метод экземпляра append (_ :) :

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

Другой способ объединения строк - это метод join (разделитель :). Вы начинаете с массива строк, который нужно объединить, и передаете ему строку, которая должна быть вставлена между ними:

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