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言語で行いたいと思います。
文字列を連結する方法はいくつかあります。
let a = "Hello"
let b = "World"
let first = a + ", " + b
let second = "\(a), \(b)"
あなたもすることができます:
var c = "Hello"
c += ", World"
他にも方法があると思います。
説明のビット
let
は定数を作成します。 (一種のNSString
)。一度設定した値は変更できません。それでも他のものに追加して、新しい変数を作成することはできます。
var
は変数を作成します。 (NSMutableString
のようなものです)その値を変更することができます。しかし、これはStack Overflowで何度も答えられました(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 a 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"
とてもシンプル:
let StringA = "Hello"
let StringB = "World"
let ResultString = "\(StringA)\(StringB)"
println("Concatenated result = \(ResultString)")
Swiftで stringByAppendingString を使用できるようになりました。
var string = "Swift"
var resultString = string.stringByAppendingString(" is new Programming Language")
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"
文字列値を連結することも意味します。
これがお役に立てば幸いです。
SwiftではstringByAppendingFormatも使用できます。
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は2つの文字列の組み合わせの出力を格納します
let strin3 = "\(string1)\(string2)"
これを行うにはSwiftString( https://github.com/amayne/SwiftString )を使用できます。
"".join(["string1", "string2", "string3"]) // "string1string2string"
" ".join(["hello", "world"]) // "hello world"
免責事項:私はこの拡張子を書いた
Objective-CからSwift(4)に切り替えたところ、よく使用することがわかりました。
let allWords = String(format:"%@ %@ %@",message.body!, message.subject!, message.senderName!)
Swift 5 Appleでは、#記号を使用したRaw文字列を導入しています。
例:
print(#"My name is "XXX" and I'm "28"."#)
let name = "XXX"
print(#"My name is \#(name)."#)
\の後に記号#が必要です。通常の\(name)は、文字列内の文字として解釈されます。
拡張子を使うこともできます。
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"