1. ホーム
  2. go

[解決済み] Goで部分文字列を抽出する

2022-03-15 06:07:17

質問

コンソールから行全体を読み込んで(空白も含めて)処理しようとしています。bufio.ReadStringを使うと改行文字も一緒に読み込まれてしまうので、改行文字を切り捨てるために以下のようなコードを思いつきました。

input,_:=src.ReadString('\n')
inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string

もっと慣用的な方法はないのでしょうか?つまり、部分文字列を抽出するときに最後のヌルバイトを処理してくれるライブラリは既にあるのでしょうか?

(で改行文字を除いた行を読み取る方法が既にあることは知っています)。 go readline -> 文字列 しかし、私はもっとエレガントな文字列操作を探しているのです)。

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

スライスの動作や文字列の保存形式がC言語と違うので、混乱しているようですね。

  • Go の任意のスライスには長さ (バイト単位) が格納されますから、そのコストを気にする必要はありません。 len を数える必要はありません。
  • 囲碁の文字列はヌル終端ではないので、ヌルバイトを削除する必要はなく、また 1 を追加してスライスした後、空の文字列を追加します。

最後の1文字を削除するには(1バイトの場合)、単に次のようにします。

inputFmt:=input[:len(input)-1]