【Golang】文字の置き換えで超便利なメソッド発見【paizaなど】

2月 12, 2022

どもです。お気に入りのニットパーカーがイッヌによってダメになりました。悲しみに暮れるsaisaiです。


皆さんは課題型の転職サービスや想定年収推定サービスなどに取り組んでおりますでしょうか。かくいう私もGo言語を本格的に学習し始めて2ヶ月が達ち、Paizaに挑戦し玉砕する毎日です。ヤッパリプログラミングムズカシイ…。


しかし、非常に勉強になる毎日でもあります。本日はこのようなプログラミング課題に役に立ちそうなGolangのメソッドを見つけましたので共有したいと思います。


上級者からすればなにも珍しくないメソッドだと思いますが、自分と同じ初級Gopherの少しでも助けになれば幸いです。

NewReplacerメソッド

Paizaなどで出題される課題は共有することが禁じられていますので具体的な問題を例に出すことはできません。しかし、多くの課題には以下のような用件がよく見受けられます。

○○という文字列(数値)を■■という文字列(数値)に置き換えなさい。

このような課題に取り組む際に非常に便利なのがstringsパッケージのNewReplacerメソッドです。

例えば以下のような課題があったとしましょう。(個人で考えた課題ですが、どこかで既出でしたら教えてください…!)

oneを1、twoを2、threeを3に変換するコードを作成しなさい。
期待する結果
saone -> sa1
twoway -> 2way
threepeace -> 3peace
saonesaone -> sa1sa1
twoonethree -> 213

このメソッドを知るまではcontainとif文を使用したりしてめちゃくちゃ苦労していたのですが、NewReplacerメソッドを知ってからそんな考慮は一切しなくなりました。以下はサンプルコードです。

package main

import (
	"fmt"
	"strings"
)

func main() {
	var a string
	fmt.Scan(&a)
	r := strings.NewReplacer("one", "1", "two", "2", "three", "3")
	resStr := r.Replace(a)
	fmt.Println(resStr)
}

見ての通り以下の部分で置換条件を指定します。

r := strings.NewReplacer("one", "1", "two", "2", "three", "3")

ワンライナーで複数の条件を指定できます。しかもめちゃくちゃ簡単なので非常に便利です。すぐに期待通りの結果を出力することが可能です!

ひとこと

ログのパースなど実務面でも使えそうですよね!というか積極的に使用していきたい!


文字列の出力に使用できる関数やメソッドは非常に多く奥が深いです。引き続きどんどん学習していきます!


ここまで読んでいただきありがとうございました!


-saisai-


↓本日のオススメ教材

Golang

Posted by CY