如何在Swift连接字符串?

在Objective-C中

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

or

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

但我想用swift语言来写。


当前回答

你可以用多种方式连接字符串:

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

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

你还可以:

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

我相信还有更多的方法。

稍微描述一下

创建一个常数。(有点像NSString)。一旦你设置了它,你就不能改变它的值。你仍然可以把它添加到其他东西,并创建新的变量。

Var创建一个变量。(有点像NSMutableString)所以你可以改变它的值。但是这个问题在Stack Overflow上已经被回答了几次(参见let和var之间的区别)。

Note

实际上,let和var与NSString和NSMutableString非常不同,但它有助于类比。

其他回答

来打印组合字符串

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

或String3存储2个字符串组合的输出

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

来自:Matt Neuburg书“iOS 13编程基础与Swift。”:

要组合(连接)两个字符串,最简单的方法是使用+运算符:

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

这种方便的表示法是可能的,因为+操作符是重载的:当操作数是数字(数字加法)时它做一件事,当操作数是字符串(连接)时它做另一件事。 +操作符带有+=赋值快捷键;当然,左边的变量必须用var声明:

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

作为+=的替代方法,你可以调用append(_:)实例方法:

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

连接字符串的另一种方法是使用joined(separator:)方法。你从一个要连接的字符串数组开始,并把要插入所有字符串之间的字符串交给它:

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

你可以用多种方式连接字符串:

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

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

你还可以:

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

我相信还有更多的方法。

稍微描述一下

创建一个常数。(有点像NSString)。一旦你设置了它,你就不能改变它的值。你仍然可以把它添加到其他东西,并创建新的变量。

Var创建一个变量。(有点像NSMutableString)所以你可以改变它的值。但是这个问题在Stack Overflow上已经被回答了几次(参见let和var之间的区别)。

Note

实际上,let和var与NSString和NSMutableString非常不同,但它有助于类比。

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

斯威夫特4.2

你也可以使用扩展:

extension Array where Element == String? {
    func compactConcate(separator: String) -> String {
        return self.compactMap {
            if let unwrappedString = $0,
               unwrappedString.isEmpty {
                return nil
            } else {
                return $0
            }
        }
        .joined(separator: separator)
    }
}

Use:

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

结果:

"The Man"
"The"
"Man"