ホームページ >バックエンド開発 >Golang >golangで文字列内の文字を置換する

golangで文字列内の文字を置換する

WBOY
WBOY転載
2024-02-09 18:09:071251ブラウズ

golangで文字列内の文字を置換する

Golang プログラミングでは、文字列内の文字を置換することは一般的な操作です。単一の文字を置換する場合でも、複数の文字を置換する場合でも、組み込みの文字列関数とメソッドを使用してこれを行うことができます。この記事では、PHPエディタXinyiを使ってgolangの文字列を置換する方法を紹介します。初心者でも経験豊富な開発者でも、この記事はこのテクニックを簡単に習得するための簡潔かつ明確なガイダンスを提供します。

質問内容

文字列配列内の特定の位置の文字を置換しようとしています。私のコードは次のようになります:

リーリー

ここで、このコマンドを実行するとエラーが発生します:

リーリー

これを行う方法はありますか? strings.Replace を使用してみましたが、私の知る限り、特定の文字のすべての出現が置き換えられるため、その特定の文字を置き換えたいと考えています。助けていただければ幸いです。ティア。

解決策

Go の文字列は不変であり、その内容を変更することはできません。文字列変数の値を変更するには、新しい文字列値を割り当てる必要があります。

簡単な方法は、まず string をバイトまたはルーン スライスに変換し、変更を加えて元に戻すことです。

リーリー

これは出力されます (Go Playground で試してください):

リーリー

注: 文字列を byte スライスに変換しました。これは、文字列にインデックスを付けると、そのバイトにインデックスが付けられるためです。 string テキストを格納する UTF-8 バイト シーケンス。バイトと文字が 1 対 1 でマッピングされる必要はありません。

2 番目の文字を置換する必要がある場合は、代わりに []rune を使用してください:

リーリー

この例では問題ありませんが、一般的には問題があると思われます。

また、strings.Replace() は (必ずしも) すべての出現を置換するわけではないことにも注意してください。 リーリー

パラメータ

n は、実行される置換の最大数を示します。したがって、次の方法でも機能します (Go Playground で試してください): リーリー

別の解決策は、置換可能な文字まで文字列をスライスし、置換可能な文字の後の文字から開始して、それらを連結することです (

Go to the playground で): リーリー

ここでも注意が必要です。スライス インデックスはバイト インデックスであり、文字 (ルーン) インデックスではありません。

関連する質問を表示:

不変文字列とポインター アドレス

以上がgolangで文字列内の文字を置換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。