文書   >   Swift   >   Substring
構造体
Substring
文字列のスライス。
宣言
概観
文字列のスライスを作成すると、Substring インスタンスが結果となります。部分文字列 (Substring) を操作するのは、その記憶領域を元の文字列と共有するため、高速かつ効率的です。Substring 型は String と同じインターフェースを提示するため、文字列の内容のコピーを回避または延期することができます。
以下の例では、greeting 文字列を作成してから、最初の文の部分文字列 (Substring) を検索します。
let greeting = "Hi there! It's nice to meet you! 👋"
let endOfSentence = greeting.firstIndex(of: "!")!
let firstSentence = greeting[...endOfSentence]
// firstSentence == "Hi there!"
部分文字列 (Substring) に対して多くの文字列操作を実行できます。ここで、最初の文の長さを見つけて、大文字のバージョンを作成します。
print("'\(firstSentence)' is \(firstSentence.count) characters long.") // Prints "'Hi there!' is 9 characters long." let shoutingSentence = firstSentence.uppercased() // shoutingSentence == "HI THERE!"
部分文字列を文字列に変換
この例では、構造化されていないいくつかのデータを含む rawData 文字列を定義してから、その文字列の prefix(while:) メソッドを使用して数値の接頭辞の部分文字列を作成します。
let rawInput = "126 a.b 22219 zzzzzz"
let numericPrefix = rawInput.prefix(while: { "0"..."9" ~= $0 })
// numericPrefix is the substring "126"
部分文字列 (Substring) を格納したり、String インスタンスを必要とする関数に渡す必要がある場合は、 String(_:) イニシャライザを使用してそれを String に変換できます。このイニシャライザを呼び出すと、部分文字列の内容が新しい文字列にコピーされます。
func parseAndAddOne(_ s: String) -> Int { return Int(s, radix: 10)! + 1 } _ = parseAndAddOne(numericPrefix) // error: cannot convert value... let incrementedPrefix = parseAndAddOne(String(numericPrefix)) // incrementedPrefix == 127
あるいは、String を受け取る関数を StringProtocol プロトコルを介して汎用関数に変換することもできます。以下のコードは、parseAndAddOne(_:) 関数の汎用バージョンを宣言しています。
func genericParseAndAddOne<S: StringProtocol>(_ s: S) -> Int {
return Int(s, radix: 10)! + 1
}
let genericallyIncremented = genericParseAndAddOne(numericPrefix)
// genericallyIncremented == 127
この汎用関数は、String または Substring のいずれかのインスタンスを使用して呼び出すことができます。
特定の操作を実行するのよりも長く部分文字列 (substring) を保存しないでください。部分文字列は、元の文字列への参照が他にない場合であっても、存在する部分ではなく、それが由来する文字列の記憶領域全体への参照を保持します。したがって、部分文字列を保存すると、それ以外の方法ではアクセスできない文字列データの寿命が延びる可能性があり、これは、メモリリークのように見える可能性があります。
トピックス
型エイリアス
イニシャライザ
空の substring を作成します。
シーケンスの要素を含むコレクションの新しいインスタンスを作成します。
init(Substring.UnicodeScalarView)
与えられた内容を持つ Substring を作成します。
与えられた内容を持つ Substring を作成します。
与えられた内容を持つ Substring を作成します。
init(cString: UnsafePointer<CChar>)
指定されたポインタにある、NULL で終わる UTF-8 でコード化されたバイトのシーケンスから文字列を作成します。
init<C, Encoding>(decoding: C, as: Encoding.Type)
指定されたコード化法で、与えられた Unicode コード単位から文字列を作成します。
init<Encoding>(decodingCString: UnsafePointer<Encoding.CodeUnit>, as: Encoding.Type)
指定されたポインタにある、null で終わるバイトのシーケンスから文字列を作成します。
init(extendedGraphemeClusterLiteral: String)
init(repeating: Character, count: Int)
指定された数の単一の繰り返し値を含む新しいコレクションを作成します。
init(stringInterpolation: DefaultStringInterpolation)
補間された文字列リテラルから新しいインスタンスを作成します。
init(unicodeScalarLiteral: String)
インスタンスプロパティ
コレクション内の要素数。
var customPlaygroundQuickLook: _PlaygroundQuickLook
  廃止  
コレクションの最初の要素。
var indices: DefaultIndices<Substring>
コレクションをサブスクリプトするのに有効なインデックス (昇順で)。
コレクションが空かどうかを示すブール値。
コレクションの最後の要素。
var lazy: LazySequence<Substring>
このシーケンスと同じ要素を含むが、map や filter などの一部の操作では遅延的に実装されるシーケンス。
var startIndex: Substring.Index
コレクション内の要素の数以下の値。
var unicodeScalars: Substring.UnicodeScalarView
var utf16: Substring.UTF16View
インスタンスメソッド
func allSatisfy((Character) -> Bool) -> Bool
シーケンスのすべての要素が与えられた述語 (predicate) を満たすかどうかを示すブール値を返します。
コレクションの末尾に要素を追加します。
func append<S>(contentsOf: S)
func append<S>(contentsOf: S)
シーケンスまたはコレクションの要素をこのコレクションの末尾に追加します。
func compactMap<ElementOfResult>((Character) -> ElementOfResult?) -> [ElementOfResult]
このシーケンスの各要素を使用して、与えられた変換を呼び出した結果の nil でない結果を含む配列を返します。
func contains(Character) -> Bool
シーケンスに与えられた要素が含まれているかどうかを示すブール値を返します。
func contains(where: (Character) -> Bool) -> Bool
与えられた述語 (predicate) を満たす要素がシーケンスに含まれているかどうかを示すブール値を返します。
func distance(from: Substring.Index, to: Substring.Index) -> Int
func drop(while: (Character) -> Bool) -> Substring
predicate が true を返し、残りの要素を返す間中要素をスキップして部分シーケンスを返します。
func dropFirst(Int) -> Substring
与えられた数の先頭の要素を除くすべてを含む部分シーケンスを返します。
func dropLast(Int) -> Substring
指定された数の末尾の要素を除くすべてを含む部分シーケンスを返します。
func elementsEqual<OtherSequence>(OtherSequence) -> Bool
このシーケンスと別のシーケンスに同じ要素が同じ順序で含まれているかどうかを示すブール値を返します。
与えられた述語 (predicate) を等価性テストとして使用して、このシーケンスと他のシーケンスが同じ順序で等価な要素を含むかどうかを示すブール値を返します。
func enumerated() -> EnumeratedSequence<Substring>
(n、x) のペアのシーケンスを返し、ここで、n はゼロから始まる連続した整数を表し、x はシーケンスの要素を表します。
func filter((Substring.Element) -> Bool) -> String
func first(where: (Character) -> Bool) -> Character?
与えられた述語 (predicate) を満たすシーケンスの最初の要素を返します。
func firstIndex(of: Character) -> String.Index?
指定された値がコレクション内で現れる最初のインデックスを返します。
func firstIndex(where: (Character) -> Bool) -> String.Index?
コレクションの要素が与えられた述語 (predicate) を満たす最初のインデックスを返します。
func flatMap<SegmentOfResult>((Character) -> SegmentOfResult) -> [SegmentOfResult.Element]
このシーケンスの各要素を使用して、与えられた変換を呼び出した結果を連結したものを含む配列を返します。
func flatMap<ElementOfResult>((Character) -> ElementOfResult?) -> [ElementOfResult]
  廃止  
func forEach((Character) -> Void)
for-in ループと同じ順序で、シーケンス内の各要素に対して与えられたクロージャを呼び出します。
func formIndex(inout String.Index, offsetBy: Int)
与えられたインデックスを指定された距離だけオフセットします。
func formIndex(inout String.Index, offsetBy: Int, limitedBy: String.Index) -> Bool
与えられたインデックスを指定された距離だけオフセットするか、または与えられた制限インデックスと等しくなるようにします。
func formIndex(after: inout String.Index)
与えられたインデックスをその後継者と置き換えます。
func formIndex(before: inout String.Index)
与えられたインデックスをその前にあったインデックスと置き換えます。
func hasPrefix<Prefix>(Prefix) -> Bool
文字列が指定された接頭辞で始まるかどうかを示すブール値を返します。
func hasSuffix<Suffix>(Suffix) -> Bool
文字列が指定された接尾辞で終わるかどうかを示すブール値を返します。
与えられたハッシャーにそれらを供給することによってこの値の本質的な要素をハッシュします。
func index(Substring.Index, offsetBy: Int) -> Substring.Index
func index(Substring.Index, offsetBy: Int, limitedBy: Substring.Index) -> Substring.Index?
func index(after: Substring.Index) -> Substring.Index
func index(before: Substring.Index) -> Substring.Index
func index(of: Character) -> String.Index?
指定された値がコレクション内で現れる最初のインデックスを返します。
  廃止  
func insert(Character, at: String.Index)
コレクションの指定された位置に新しい要素を挿入します。
func insert<C>(contentsOf: C, at: String.Index)
シーケンスの要素をコレクションの指定された位置に挿入します。
func last(where: (Character) -> Bool) -> Character?
与えられた述語 (predicate) を満たすシーケンスの最後の要素を返します。
func lastIndex(of: Character) -> String.Index?
指定した値がコレクション内で現れる最後のインデックスを返します。
func lastIndex(where: (Character) -> Bool) -> String.Index?
与えられた述語 (predicate) に一致するコレクション内の最後の要素のインデックスを返します。
func lexicographicallyPrecedes<OtherSequence>(OtherSequence) -> Bool
要素を比較するために小なり演算子 (<) を使用して、シーケンスが辞書順で別のシーケンスの前にあるかどうかを示すブール値を返します。
与えられた述語 (predicate) を使用して要素を比較し、シーケンスが辞書順で別のシーケンスの前にあるかどうかを示すブール値を返します。
func makeIterator() -> IndexingIterator<Substring>
コレクションの要素に対する繰り返し因子 (iterator) を返します。
func map<T>((Character) -> T) -> [T]
与えられたクロージャをシーケンスの要素にマッピングした結果を含む配列を返します。
シーケンス内の最大の要素を返します。
func max(by: (Character, Character) -> Bool) -> Character?
与えられた述語 (predicate) を要素間の比較として使用して、シーケンス内の最大の要素を返します。
シーケンス内の最小の要素を返します。
func min(by: (Character, Character) -> Bool) -> Character?
与えられた述語 (predicate) を要素間の比較として使用して、シーケンス内の最小の要素を返します。
func popFirst() -> Character?
コレクションの最初の要素を削除して返します。
func popLast() -> Character?
コレクションの最後の要素を削除して返します。
func prefix(Int) -> Substring
指定された最大長までの、コレクションの最初の要素を含む部分シーケンスを返します。
func prefix(through: String.Index) -> Substring
コレクションの先頭から指定された位置までの部分シーケンスを返します。
func prefix(upTo: String.Index) -> Substring
コレクションの先頭から指定された位置までの、それを含めない、部分シーケンスを返します。
func prefix(while: (Character) -> Bool) -> Substring
predicate が false を返し、残りの要素をスキップするまで、初めの要素を含む部分シーケンスを返します。
func randomElement() -> Character?
コレクションのランダムな要素を返します。
func randomElement<T>(using: inout T) -> Character?
乱数の発生源として与えられた発生器を使用して、コレクションのランダムな要素を返します。
func reduce<Result>(Result, (Result, Character) -> Result) -> Result
与えられたクロージャを使用してシーケンスの要素を組み合わせた結果を返します。
func reduce<Result>(into: Result, (inout Result, Character) -> ()) -> Result
与えられたクロージャを使用してシーケンスの要素を組み合わせた結果を返します。
func remove(at: String.Index) -> Character
指定された位置にある要素を削除して返します。
func removeAll(keepingCapacity: Bool)
コレクションからすべての要素を削除します。
func removeAll(where: (Character) -> Bool)
与えられた述語を満たす全ての要素を削除します。
func removeFirst() -> Character
コレクションの最初の要素を削除して返します。
指定した数の要素をコレクションの先頭から削除します。
func removeLast() -> Character
コレクションの最後の要素を削除して返します。
指定した数の要素をコレクションの末尾から削除します。
func removeSubrange(Range<String.Index>)
指定した部分範囲内の要素をコレクションから削除します。
指定した部分範囲内の要素をコレクションから削除します。
func replaceSubrange(Range<Substring.Index>, with: Substring)
func replaceSubrange<C>(Range<Substring.Index>, with: C)
func replaceSubrange<C, R>(R, with: C)
指定された要素の部分範囲を与えられたコレクションに置き換えます。
指定した数の要素を格納するようにコレクションを準備し、これを行うと、基になる型に適しています。
func reversed() -> ReversedCollection<Substring>
コレクションの要素を逆の順序で表示するビューを返します。
func shuffled() -> [Character]
シーケンスの要素をシャッフルして返します。
func shuffled<T>(using: inout T) -> [Character]
乱数の発生源として与えられた発生器を使用してシャッフルされた、シーケンスの要素を返します。
func sorted() -> [Character]
並べ替えられたシーケンスの要素を返します。
func sorted(by: (Character, Character) -> Bool) -> [Character]
与えられた述語 (predicate) を要素間の比較として使って並べ替えられた、シーケンスの要素を返します。
与えられた述語 (predicate) を満たす要素を含まないように、コレクションの可能な限り長い部分シーケンスを順番に返します。
func split(separator: Character, maxSplits: Int, omittingEmptySubsequences: Bool) -> [Substring]
与えられた要素と等しい要素を中心にして、コレクションの可能な限り長い部分シーケンスを順番に返します。
func starts<PossiblePrefix>(with: PossiblePrefix) -> Bool
シーケンスの最初の要素が別のシーケンスの要素と同じかどうかを示すブール値を返します。
等価性テストとして与えられた述語 (predicate) を使用して、シーケンスの最初の要素が別のシーケンスの要素と等しいかどうかを示すブール値を返します。
func suffix(Int) -> Substring
コレクションの最後の要素を含む、与えられた最大長までの部分シーケンスを返します。
func suffix(from: String.Index) -> Substring
指定された位置からコレクションの末尾までの部分シーケンスを返します。
func withCString<Result>((UnsafePointer<CChar>) -> Result) -> Result
与えられたクロージャを、文字列の内容へのポインタで呼び出します。これは、NULL で終わる UTF-8 コード単位のシーケンスとして表されます。
与えられたクロージャを、文字列の内容へのポインタで呼び出します。これは、NULL で終わるコード単位のシーケンスとして表されます。
func withContiguousStorageIfAvailable<R>((UnsafeBufferPointer<Character>) -> R) -> R?
func write<Target>(to: inout Target)
サブスクリプト
subscript(Substring.Index) -> Character
subscript(Range<Substring.Index>) -> Substring
subscript<R>(R) -> Substring
範囲式で指定されたコレクションの要素の連続した部分範囲にアクセスします。
subscript((UnboundedRange_) -> ()) -> Substring
演算子関数
static func != (Substring, Substring) -> Bool
2 つの値が等しくないかどうかを示すブール値を返します。
static func != <RHS>(Substring, RHS) -> Bool
static func + <Other>(Other, Substring) -> Substring
シーケンスとコレクションの要素を連結して新しいコレクションを作成します。
static func + <Other>(Substring, Other) -> Substring
コレクションとシーケンスの要素を連結して新しいコレクションを作成します。
static func + <Other>(Substring, Other) -> Substring
2 つのコレクションの要素を連結して新しいコレクションを作成します。
static func += <Other>(inout Substring, Other)
シーケンスの要素を範囲交換可能なコレクションに付け加えます。
static func ... (Substring) -> PartialRangeFrom<Substring>
下の境界から上方向に延びる部分範囲を返します。
static func ... (Substring) -> PartialRangeThrough<Substring>
上の境界を含む、そこまでの部分範囲を返します。
static func ... (Substring, Substring) -> ClosedRange<Substring>
両方の境界を含む閉鎖範囲を返します。
static func ..< (Substring) -> PartialRangeUpTo<Substring>
上限を含まないが上限までの部分範囲を返します。
static func ..< (Substring, Substring) -> Range<Substring>
下限を含むが上限を含まない、半開放範囲を返します。
static func < <RHS>(Substring, RHS) -> Bool
最初の引数の値が 2 番目の引数の値より小さいかどうかを示すブール値を返します。
static func <= (Substring, Substring) -> Bool
最初の引数の値が 2 番目の引数の値以下であるかどうかを示すブール値を返します。
static func <= <RHS>(Substring, RHS) -> Bool
最初の引数の値が 2 番目の引数の値以下であるかどうかを示すブール値を返します。
static func == <RHS>(Substring, RHS) -> Bool
2 つの値が等しいかどうかを示すブール値を返します。
static func > (Substring, Substring) -> Bool
最初の引数の値が 2 番目の引数の値より大きいかどうかを示すブール値を返します。
static func > <RHS>(Substring, RHS) -> Bool
最初の引数の値が 2 番目の引数の値より大きいかどうかを示すブール値を返します。
static func >= (Substring, Substring) -> Bool
最初の引数の値が 2 番目の引数の値以上であるかどうかを示すブール値を返します。
static func >= <RHS>(Substring, RHS) -> Bool
最初の引数の値が 2 番目の引数の値以上であるかどうかを示すブール値を返します。
構造体
struct Substring.UTF16View
struct Substring.UTF8View
struct Substring.UnicodeScalarView
関連
以下への準拠
CustomDebugStringConvertible
CustomStringConvertible
ExpressibleByExtendedGraphemeClusterLiteral
ExpressibleByStringLiteral
ExpressibleByUnicodeScalarLiteral
LosslessStringConvertible
RangeReplaceableCollection
以下も見よ
関連した文字列の型
文字列を文字のコレクションとして表すことができる型。
文字列内の文字またはコード単位の位置。
struct String.UnicodeScalarView
Unicode スカラー値のコレクションとしての文字列の内容のビュー。
struct String.UTF16View
UTF-16 コード単位のコレクションとしての文字列の内容のビュー。
struct String.UTF8View
UTF-8 コード単位のコレクションとしての文字列の内容のビュー。
struct String.Encoding
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)