Rust-string
錆-文字列
Rustの文字列データ型は、次のように分類することができます-
- 文字列リテラル(&str)
- 文字列オブジェクト*(文字列) *
文字列リテラル
- コンパイル時に文字列の値がわかっている場合は、文字列リテラル(&str)が使用されます。 文字列リテラルは、変数にハードコーディングされた文字のセットです。 たとえば、_let company = "Tutorials Point" _です。 文字列リテラルはモジュールstd
- strにあります。 文字列リテラルは、文字列スライスとも呼ばれます。
次の例では、_company_と_location_の2つの文字列リテラルを宣言しています。
文字列リテラルはデフォルトでは静的です。 これは、文字列リテラルがプログラム全体の期間中有効であることが保証されていることを意味します。 以下に示すように、変数を静的として明示的に指定することもできます-
上記のプログラムは、次の出力を生成します-
文字列オブジェクト
Stringオブジェクトタイプは標準ライブラリで提供されます。 文字列リテラルとは異なり、文字列オブジェクトタイプはコア言語の一部ではありません。 これは、標準ライブラリ_pub struct String_でパブリック構造として定義されています。 文字列は成長可能なコレクションです。 可変でUTF-8でエンコードされたタイプです。* String *オブジェクトタイプは、実行時に提供される文字列値を表すために使用できます。 文字列オブジェクトはヒープに割り当てられます。
構文
文字列オブジェクトを作成するには、次の構文のいずれかを使用できます-
上記の構文は空の文字列を作成します
これにより、パラメータとして* from()*メソッドに渡されるデフォルト値を持つ文字列が作成されます。
次の例は、Stringオブジェクトの使用法を示しています。
上記の例では、2つの文字列を作成します。_new_メソッドを使用した空の文字列オブジェクトと、_from_メソッドを使用した文字列リテラルからの文字列オブジェクトです。
出力は次のようになります-
一般的なメソッド-文字列オブジェクト
Sr.No. | Method | Signature | Description |
---|---|---|---|
1 | new() | pub const fn new() → String | Creates a new empty String. |
2 | to_string() | fn to_string(&self) → String | Converts the given value to a String. |
3 | replace() | pub fn replace<'a, P>(&'a self, from: P, to: &str) → String | Replaces all matches of a pattern with another string. |
4 | as_str() | pub fn as_str(&self) → &str | Extracts a string slice containing the entire string. |
5 | push() | pub fn push(&mut self, ch: char) | Appends the given char to the end of this String. |
6 | push_str() | pub fn push_str(&mut self, string: &str) | Appends a given string slice onto the end of this String. |
7 | len() | pub fn len(&self) → usize | Returns the length of this String, in bytes. |
8 | trim() | pub fn trim(&self) → &str | Returns a string slice with leading and trailing whitespace removed. |
9 | split_whitespace() | pub fn split_whitespace(&self) → SplitWhitespace | Splits a string slice by whitespace and returns an iterator. |
10 | split() | pub fn split<'a, P>(&'a self, pat: P) → Split<'a, P> , where P is pattern can be &str, char, or a closure that determines the split. | Returns an iterator over substrings of this string slice, separated by characters matched by a pattern. |
11 | chars() | pub fn chars(&self) → Chars | Returns an iterator over the chars of a string slice. |
イラスト:new()
出力
上記のプログラムは、次の出力を生成します-
イラスト:to_string()
Stringオブジェクトのすべてのメソッドにアクセスするには、 _ to_string()_ 関数を使用して文字列リテラルをオブジェクトタイプに変換します。
出力
上記のプログラムは、次の出力を生成します-
イラスト:replace()
replace関数は、出現するすべての文字列 Hello を Howdy に置き換えます。
出力
上記のプログラムは、次の出力を生成します-
イラスト:as_str()
- as_str()*関数は、文字列全体を含む文字列スライスを抽出します。
出力
上記のプログラムは、次の出力を生成します-
イラスト:push()
- push()*関数は、指定されたcharをこのStringの末尾に追加します。
出力
上記のプログラムは、次の出力を生成します-
イラスト:push_str()
- push_str()*関数は、指定された文字列スライスを文字列の最後に追加します。
出力
上記のプログラムは、次の出力を生成します-
イラスト:len()
- len()*関数は、文字列(スペースを含む)の合計文字数を返します。
出力
上記のプログラムは、次の出力を生成します-
イラスト:trim()
trim()関数は、文字列の先頭と末尾のスペースを削除します。 この関数はインラインスペースを削除しないことに注意してください。
出力
上記のプログラムは、次の出力を生成します-
イラスト:split_whitespace()
出力
イラスト:split()string
上記の例では、コンマ*(、)が検出されるたびに、文字列 *fullname を分割します。
出力
イラスト:chars()
文字列内の個々の文字には、charsメソッドを使用してアクセスできます。 これを理解するための例を考えてみましょう。
出力
+演算子を使用した文字列の連結
文字列値を別の文字列に追加できます。 これは、連結または補間と呼ばれます。 文字列連結の結果は、新しい文字列オブジェクトです。 +演算子は、add_メソッドを内部的に使用します。 add関数の構文は2つのパラメーターを取ります。 最初のパラメーターは_self –文字列オブジェクト自体であり、2番目のパラメーターは2番目の文字列オブジェクトの参照です。 これは以下に示されています-
図:ストリング連結
出力は以下のようになります
イラスト:タイプキャスト
次の例は、数値を文字列オブジェクトに変換する方法を示しています-
出力は以下のようになります
イラスト:フォーマット! マクロ
Stringオブジェクトに一緒に追加する別の方法は、formatというマクロ関数を使用することです。 Formatの使用! 以下に示すとおりです。
出力は以下のようになります