バイトを比較・検索する
文字列にstd.memのヘルパーを使います。
「バイトを比較・検索する」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
== は使えません
2 つのスライスは異なるウィンドウであるため、== は内容ではなくポインターと長さを比較します。テキストの比較には、バイト単位で実際にチェックする必要があります。
std.mem が解決します
標準ライブラリモジュールの std.mem は、あらゆる要素型のスライスを扱えます。もちろん []const u8 の文字列も対象です。
const std = @import("std");
const mem = std.mem;eql で内容を比較する
mem.eql を使うと、2 つのスライスが同じ順序で同じバイトを保持しているかを判定できます。分岐に使える通常の bool を返します。
mem.eql(u8, "zig", "zig"); // true要素型を渡す
多くの std.mem ヘルパーでは、最初の引数として要素型を渡します。文字列の場合、この引数は常に u8 で、[]const u8 と一致します。
部分文字列を検索する
indexOf を使うと、テキスト内のテキストを検索できます。最初に一致した位置のインデックス、または見つからない場合は null を含むオプショナル値を返します。
mem.indexOf(u8, "hello", "ll"); // 2null を処理する
indexOf はオプショナル値を返すため、if または orelse でアンラップします。null の結果は、検索対象が見つからなかったことを意味します。
if (mem.indexOf(u8, h, n)) |i| {
// found at i
}末尾から検索する
最初ではなく最後に現れる位置が必要ですか。lastIndexOf を使ってください。後ろ向きに検索し、こちらもオプショナルなインデックスを返します。
接頭辞と接尾辞
startsWith と endsWith を使うと、文字列がどのように始まり、どのように終わるかを確認できます。どちらも u8 を受け取り、解析に適した単純な bool を返します。
mem.startsWith(u8, "main.zig", "main");単一バイトを検索する
部分文字列ではなく 1 バイトを探すには、indexOfScalar を使います。単一の文字だけが必要な場合の高速な方法です。
mem.indexOfScalar(u8, "a,b", ',');出現回数を数える
mem.count を使うと、検索対象がテキスト内に何回現れるかを数えられます。usize を返し、回数が 0 でも null にはなりません。
mem.count(u8, "aaa", "a"); // 3大文字と小文字の区別
これらのヘルパーは大文字と小文字を区別します。A と a は異なるバイトです。区別しない検索をしたい場合は、先に大文字・小文字を統一してください。
確認問題
2 つの文字列にまったく同じテキストが含まれているかを知りたいとします。
まとめ
mem.eql でテキストを比較し、indexOf、startsWith、indexOfScalar、count を使って検索しました。null と大文字・小文字も考慮できます。🔍
よくある質問
「バイトを比較・検索する」レッスンは無料ですか?
はい。「バイトを比較・検索する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「バイトを比較・検索する」で何を学びますか?
文字列にstd.memのヘルパーを使います。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「バイトを比較・検索する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。