1. ホーム
  2. string

[解決済み] 文字列から最初の文字を取り出すには?

2023-01-17 04:48:27

質問

の最初の文字を取得したい。 std::str . メソッド char_at() は現在不安定で、同様に String::slice_chars .

を思いついたのですが、1文字だけ取得して残りのベクトルを使わないというのは過剰な気がします。

let text = "hello world!";
let char_vec: Vec<char> = text.chars().collect();
let ch = char_vec[0];

どのように解決するのですか?

UTF-8では、「文字」とは何かということは定義されていませんので、何をしたいかによります。この場合 char は Unicode のスカラー値なので、最初の char&str は1バイトから4バイトになります。

もし、最初の char に集めないでください。 Vec<char> に集めず、イテレータを使うだけです。

let text = "hello world!";
let ch = text.chars().next().unwrap();

別の方法として、イテレータの nth メソッドを使うこともできます。

let ch = text.chars().nth(0).unwrap();

に渡されたインデックスより前の要素は nth に渡されたインデックスの前の要素はイテレータから消費されることに注意してください。