[Golang]文字列(string)の後ろからN文字を削除するには?

Go

どうも、ちょげ(@chogetarou)です。

文字列(string)の末尾から指定した文字数を削除する方法を紹介します。

スポンサーリンク

方法

文字列(string)の後ろからN文字を削除する方法は、2つあります。

スライス

ひとつは、「スライス」を使う方法です。

具体的な方法としては、文字列の先頭から長さを「-N」(N=削除する文字数)した場所までをスライスします。

文字列の長さは、len()で取得します。

//text=対象の文字列, n=削除する文字数
result := text[0 : len(text)-n]

上記のスライスで、文字列(string)の末尾からN文字を削除した文字列を生成できます。

上記のスライスは、全角の文字列の場合に対応できません。

使用例

package main

import (
	"fmt"
)

func main() {
	text := "Hello,World"

	n := 3 //削除する文字数
	result := text[0 : len(text)-n]

	fmt.Println(result)
}

出力:
Hello,Wo

string()とスライス

もうひとつは、string()とスライスを使う方法です。

まず、文字列をスライスに変換します。

次に、string()を呼び出します。

string()の引数に、変換したスライスを先頭から文字列の長さを「-N」(N=削除する文字数)した場所までをスライスした結果を指定します。

//text=対象の文字列, n=削除する文字数
slice := []rune(text) //文字列をスライスに変換
result := string(slice[0 : len(slice)-n]) //文字列の後ろからN文字を削除

上記のstring()は、文字列(string)の末尾からN文字を削除した文字列を生成します。

使用例

package main

import (
	"fmt"
)

func main() {
	text1 := "Hello,World"
	text2 := "こんにちは、世界"

	n := 3 //取得する文字数

	slice1 := []rune(text1)
	result1 := string(slice1[0 : len(slice1)-n])

	slice2 := []rune(text2)
	result2 := string(slice2[0 : len(slice2)-n])

	fmt.Println(result1)
	fmt.Println(result2)
}
出力:
Hello,Wo
こんにちは
スポンサーリンク

まとめ

文字列(string)の後ろからN文字を削除する方法は、次の2つです。

  • スライスを使う方法
    result := text[0 : len(text)-n]
  • string()とスライスを使う方法
    slice := []rune(text)
    result := string(slice[0 : len(slice)-n])

コメント

タイトルとURLをコピーしました