Swift 4用に更新
文字列の始まりと終わりを確認する
hasPrefix(_:)
およびhasSuffix(_:)
メソッドを使用して、別の文字列との等価性をテストできます。
let str = "Hello, playground"
if str.hasPrefix("Hello") { // true
print("Prefix exists")
}
if str.hasSuffix("ground") { // true
print("Suffix exists")
}
実際のプレフィックスとサフィックスの部分文字列の取得
実際の接頭辞または接尾辞の部分文字列を取得するには、次のいずれかの方法を使用できます。簡単にするために、最初の方法をお勧めします。すべてのメソッドは使用しstr
て
let str = "Hello, playground"
方法1:(推奨)prefix(Int)
およびsuffix(Int)
let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground
これは私の意見ではより良い方法です。以下の方法2および3とは異なり、この方法は、インデックスが範囲外になってもクラッシュしません。文字列内のすべての文字を返すだけです。
let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground
もちろん、コードに問題があることを通知するため、クラッシュが発生することもあります。以下の2番目の方法も検討してください。インデックスが範囲外になると、エラーがスローされます。
方法2:prefix(upto:)
とsuffix(from:)
Swift Stringインデックスは、特殊文字(絵文字など)を考慮する必要があるため、注意が必要です。ただし、インデックスを取得すると、プレフィックスまたはサフィックスを簡単に取得できます。(に関する他の回答を参照してくださいString.Index
。)
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str.prefix(upTo: prefixIndex)) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str.suffix(from: suffixIndex)) // ground
範囲外に出ないようにしたい場合は、limitedBy
(ここでもこの回答を参照してください)を使用してインデックスを作成できます。
方法3:下付き文字
Stringはコレクションなので、添え字を使用してプレフィックスとサフィックスを取得できます。
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str[..<prefixIndex]) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str[suffixIndex...]) // ground
参考文献