如何在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语言来写。


当前回答

你可以通过以下方式添加字符串:

str += “” str = str + “” str = str + str2 str = “” + “” str = “\(变量)” str = str + “\(变量)”

我想我把它们都叫出来了。

其他回答

斯威夫特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"

在Swift 5中,apple引入了使用#符号的原始字符串。

例子:

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

符号#必须在\后面。常规的\(name)将被解释为字符串中的字符。

你可以使用SwiftString (https://github.com/amayne/SwiftString)来做这件事。

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

免责声明:我写了这个扩展

串联是指Swift中字符串的组合。字符串可能包含文本,整数,甚至表情符号!字符串连接有很多方法。让我列举一些:

相同的字符串

使用+ =

如果我们想要添加到一个已经存在的String,这是很有用的。为此,我们的String应该是可变的或可以修改的,因此将其声明为变量。例如:

var myClassmates = "John, Jane"
myClassmates += ", Mark" // add a new Classmate
// Result: "John, Jane, Mark"

不同的字符串

如果我们想把不同的字符串组合在一起,例如:

let oldClassmates = "John, Jane" 
let newClassmate = "Mark"

我们可以使用以下任何一种:

1)使用+

let myClassmates = oldClassmates + ", " + newClassmate
// Result: "John, Jane, Mark"

注意,每个字符串可以是一个变量或常量。如果你只改变一次值,就把它声明为常量。

2)字符串插值

let myClassmates = "\(oldClassmates), \(newClassmate)"
// Result: "John, Jane, Mark"

3)添加

let myClassmates = oldClassmates.appending(newClassmate)
// Result: "John, Jane, Mark"

更多信息请参考Swift Book中的字符串和字符。

更新:在Swift 5.1上测试

来自: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)