← 記事一覧へ

Go 学習記録(5):文字列

Go 基礎学習の第 5 回。文法、実例、学習の過程を記録します。

文字列の基本操作

1. エスケープシーケンス

1.1. 基本の規則

エスケープにはスラッシュではなく、バックスラッシュ \ を使います。

例:

name := "你可真是个\"小机灵鬼\""
//在这里直接使用"小机灵鬼"会报错,因为双引号是字符串的标志,所以需要使用转义符来表示引号:\"

1.2. よく使うエスケープ

Go でよく使うものを示します。

go

2. 書式付きの出力

Println は改行を追加します。 Print は自動では改行しません。

2.1. 基本的な使い方

細かい文字列を連結して出力すると、煩雑になりがちです。 go

書式付きの出力には Printf を使います。

fmt.Printf("用户名:%s, 年龄:%d,地址:%s, 电话:%s\r\n",username, age, address, mobile )

2.2. 長所と短所

長所:読みやすく保守しやすいこと。

短所:書式処理には実行時のコストがあります。

2.3. さらに詳しい書式

2.3.1. 既定の書式と型

go

2.3.2. 整数

go

2.3.3. 文字

go

2.3.4. 文字列

go

2.3.5. 浮動小数点数

go

3. よく使う文字列操作

3.1. 文字列の長さ

何を長さとするかは、データと操作によって異なります。

3.1.1. ASCII の英数字

name := "hello world"
fmt.Println(len(name))

3.1.2. 中国語を含む文字列

name := "hello 世界"
bytes := []byte(name)
fmt.Println(len(bytes))

3.2. 効率的な文字列の連結

3.2.1. + を使う

username := "user" + "name"

3.2.2. 出力時に書式を指定する

fmt.Printf("用户名:%s, 年龄:%d,地址:%s, 电话:%s\r\n",username, age, address, mobile )

3.2.3. strings.Builder を使う

多数の断片から効率よく文字列を組み立てるときに便利です。

var builder strings.Builder
builder.WriteString("hello")
builder.WriteString("world")
result := builder.String()
fmt.Println(result)

3.3. 文字列を比較する

//等于
a := "hello"
b := "hello"
fmt.Println(a == b)

//不等于
a = "hello"
b = "world"
fmt.Println(a != b)

//大于
a = "hello"
b = "world"
fmt.Println(a > b)

//小于
a = "hello"
b = "world"
fmt.Println(a < b)

//大于等于
//小于等于
//……

3.4. strings のよく使う関数

3.4.1. パッケージを読み込む

import {
	"fmt"
	"strings"
}

3.4.2. よく使う操作

(1) 部分文字列を含むか調べる

strings.Contains("hello world", "world")

(2) 文字列の長さ

name := "hello world"
len(name)

(3) 部分文字列の出現回数

strings.Count("hello world", "l")

(4) 文字列を分割する

//以空格为分隔符进行分割
strings.Split("hello world", " ")

(5) 接頭辞や接尾辞を調べる

//前缀
strings.HasPrefix("hello world", "he")

//后缀
strings.HasSuffix("hello world", "ld")

(6) 部分文字列の位置を探す

//英文
strings.Index("hello world", "lo")

(7) 部分文字列を置換する

//把字符串里的所有l替换成a,替换前2个
//-1表示全部替换
strings.Replace("hello world", "l", "a", 2)

(8) 大文字と小文字を変換する

//全转成小写
strings.ToLower("HELLO WORLD")

//全转成大写
strings.ToUpper("hello world")

(9) 指定した文字を取り除く

//去掉左右两边指定的字符,指定的字符可以是多个,比如空格,#,*等
strings.Trim("#hello #world#", "#")
//得到的结果是:hello #world

//左边的特殊字符
strings.TrimLeft("#hello #world#", "#")
//得到的结果是:hello #world#

//右边的特殊字符
strings.TrimRight("#hello #world#", "#")
//得到的结果是:#hello #world

ほかの関数は、ソースや文書で確認できます。多くの IDE では、関数名から定義へ移動できます。

この記事の日付について

旧サイトに記載された日付を保持しています。実際に書き始めた時期は、これより早い可能性があります。

同じシリーズ · Go の基礎学習

前の記事Go 学習記録(4):基本的な型 ←次の記事Go 学習記録(6):条件分岐とループ →