Structure

Substring

A slice of a string. ある文字列のスライス。

Declaration 宣言

@frozen struct Substring

Overview 概要

When you create a slice of a string, a Substring instance is the result. Operating on substrings is fast and efficient because a substring shares its storage with the original string. The Substring type presents the same interface as String, so you can avoid or defer any copying of the string’s contents. あなたがある文字列のスライスを作成している場合、Substringインスタンスが結果です。下位文字列での演算は高速で効率的です、なぜなら下位文字列はそれのストレージを本来の文字列と共有するからです。Substring型は、Stringと同じインターフェイスを提供します、それであなたは文字列の内容の何らかのコピーを避けるまたは延期できます。

The following example creates a greeting string, and then finds the substring of the first sentence: 以下の例は、greeting文字列を作成して、それから第一文からなる下位文字列を見つけます。


let greeting = "Hi there! It's nice to meet you! 👋"
let endOfSentence = greeting.firstIndex(of: "!")!
let firstSentence = greeting[...endOfSentence]
// firstSentence == "Hi there!"

You can perform many string operations on a substring. Here, we find the length of the first sentence and create an uppercase version. あなたは、多くの文字列演算を買い文字列上で行えます。ここで、私たちは最初の文の長さを見つけます、そして大文字バージョンを作成します。


print("'\(firstSentence)' is \(firstSentence.count) characters long.")
// Prints "'Hi there!' is 9 characters long."


let shoutingSentence = firstSentence.uppercased()
// shoutingSentence == "HI THERE!"

Converting a Substring to a String SubstringをStringに変換する

This example defines a rawData string with some unstructured data, and then uses the string’s prefix(while:) method to create a substring of the numeric prefix: この例は、rawData文字列を何らかの構造化されていないデータで定義します、それからその文字列のもつprefix(while:)メソッドを使うことで数字接頭辞からなる下位文字列を作成します。


let rawInput = "126 a.b 22219 zzzzzz"
let numericPrefix = rawInput.prefix(while: { "0"..."9" ~= $0 })
// numericPrefix is the substring "126"

When you need to store a substring or pass it to a function that requires a String instance, you can convert it to a String by using the String(_:) initializer. Calling this initializer copies the contents of the substring to a new string. あなたが下位文字列を格納するまたは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

Alternatively, you can convert the function that takes a String to one that is generic over the StringProtocol protocol. The following code declares a generic version of the parseAndAddOne(_:) function: あるいは、あなたはStringをとる関数をStringProtocolプロトコルを越えて総称体であるものに変換できます。以下のコードは、parseAndAddOne(_:)関数のひとつの総称体版を宣言します:


func genericParseAndAddOne<S: StringProtocol>(_ s: S) -> Int {
    return Int(s, radix: 10)! + 1
}
let genericallyIncremented = genericParseAndAddOne(numericPrefix)
// genericallyIncremented == 127

You can call this generic function with an instance of either String or Substring. あなたは、この総称体関数をStringまたはSubstringのどちらのインスタンスでも呼び出せます。

Topics 話題

Type Aliases 型エイリアス

Initializers イニシャライザ

Instance Properties 様々なインスタンスプロパティ

Instance Methods インスタンスメソッド

Subscripts 添え字

Operator Functions 演算子関数

See Also 参照

Related String Types 関連した文字列型