11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Goで全角/半角変換する

Last updated at Posted at 2018-01-15

一応Goの標準ライブラリにtext/widthというパッケージがあるのですが半角カタカナの濁音・半濁音を正しく(プ<=>プなど)変換できていなかったので変換するgo-mojiパッケージを作りました。インターフェースの部分でMoji.jsを参考にさせて頂きました。

前置き

この記事を書きながら調べてて知ったんですがtext/unicode/normというのもあるんですね... 使い方がややこしそうですが中身をこれに引っ越すかもしれません。

インストール方法

go getしましょう

$ go get github.com/ktnyt/go-moji

使い方

package main

import (
	"fmt"

	"github.com/ktnyt/go-moji"
)

func main() {
	s := "ABC ABC あがぱ アガパ アガパ"

	// 全角英数を半角英数に変換
	fmt.Println(moji.Convert(s, moji.ZE, moji.HE))

	// 半角英数を全角英数に変換
	fmt.Println(moji.Convert(s, moji.HE, moji.ZE))

	// ひらがなをカタカナに変換
	fmt.Println(moji.Convert(s, moji.HG, moji.KK))

	// カタカナをひらがなに変換
	fmt.Println(moji.Convert(s, moji.KK, moji.HG))

	// 全角カタカナを半角カタカナに変換
	fmt.Println(moji.Convert(s, moji.ZK, moji.HK))

	// 半角カタカナを全角カタカナに変換
	fmt.Println(moji.Convert(s, moji.HK, moji.ZK))

	// 全角スペースを半角スペースに変換
	fmt.Println(moji.Convert(s, moji.ZS, moji.HS))

	// 半角スペースを全角スペースに変換
	fmt.Println(moji.Convert(s, moji.HS, moji.ZS))
}
11
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?