サーチ…


前書き

文字列は実際には読み取り専用のバイトスライスです。 Goでは、文字列リテラルには常にそのコンテンツの有効なUTF-8表現が含まれます。

構文

  • variableName:= "Hello World" //文字列を宣言する
  • variableName:= `Hello World` //生のリテラル文字列を宣言します
  • variableName:= "Hello" + "World" //文字列を連結する
  • substring:= "Hello World" [0:4] //文字列の一部を取得する
  • 文字:= "Hello World" [6] //文字列の文字を取得する
  • fmt.Sprintf( "%s"、 "Hello World")//文字列をフォーマットする

文字列型

string型を使用すると、一連の文字であるテキストを格納できます。文字列を作成するには複数の方法があります。リテラル文字列は、二重引用符で囲んでテキストを書くことによって作成されます。

text := "Hello World"

Go文字列はUTF-8をサポートしているため、前の例は完全に有効です。文字列は任意のバイトを保持しますが、必ずしもすべての文字列に有効なUTF-8が含まれているとは限りませんが、文字列リテラルは常に有効なUTF-8シーケンスを保持します。

文字列のゼロ値は空の文字列""です。

文字列は、 +演算子を使用して連結できます。

text := "Hello " + "World"

文字列はbackticks ``を使って定義することもできます。これは、文字がエスケープされないことを意味する生の文字列リテラルを作成します。

text1 := "Hello\nWorld"
text2 := `Hello
World`

前の例では、 text1は新しい行を表す\n文字をエスケープし、 text2は改行文字を直接含みます。 text1 == text2を比較すると、結果はtrueとなりtrue

しかし、 text2 := `Hello\nWorld`\n文字をエスケープしません。つまり、文字列にはHello\nWorldなしのテキストHello\nWorldが含まれています。これは、 text1 := "Hello\\nWorld"です。

テキストの書式設定

パッケージfmt 、フォーマット動詞を使用してテキストを印刷しフォーマットするための関数を実装しています。動詞はパーセント記号で表されます。

一般動詞:

%v    // the value in a default format
      // when printing structs, the plus flag (%+v) adds field names
%#v   // a Go-syntax representation of the value
%T    // a Go-syntax representation of the type of the value
%%    // a literal percent sign; consumes no value

ブール値:

%t    // the word true or false

整数:

%b    // base 2
%c    // the character represented by the corresponding Unicode code point
%d    // base 10
%o    // base 8
%q    // a single-quoted character literal safely escaped with Go syntax.
%x    // base 16, with lower-case letters for a-f
%X    // base 16, with upper-case letters for A-F
%U    // Unicode format: U+1234; same as "U+%04X"

浮動小数点および複雑な構成要素:

%b    // decimalless scientific notation with exponent a power of two,
      // in the manner of strconv.FormatFloat with the 'b' format,
      // e.g. -123456p-78
%e    // scientific notation, e.g. -1.234456e+78
%E    // scientific notation, e.g. -1.234456E+78
%f    // decimal point but no exponent, e.g. 123.456
%F    // synonym for %f
%g    // %e for large exponents, %f otherwise
%G    // %E for large exponents, %F otherwise

文字列とバイトのスライス(これらの動詞と等価に扱われます):

%s    // the uninterpreted bytes of the string or slice
%q    // a double-quoted string safely escaped with Go syntax
%x    // base 16, lower-case, two characters per byte
%X    // base 16, upper-case, two characters per byte

ポインタ:

%p    // base 16 notation, with leading 0x

動詞を使用すると、複数のタイプを連結した文字列を作成できます。

text1 := fmt.Sprintf("Hello %s", "World")
text2 := fmt.Sprintf("%d + %d = %d", 2, 3, 5)
text3 := fmt.Sprintf("%s, %s (Age: %d)", "Obama", "Barack", 55)

関数Sprintfは、最初のパラメータで文字列をフォーマットし、動詞を次のパラメータの値で置き換えて結果を返します。同様Sprintf 、関数Printfまた、フォーマットではなく、結果を返すのは、文字列を出力します。

文字列パッケージ

  • strings.Contains

    fmt.Println(strings.Contains("foobar", "foo")) // true
    fmt.Println(strings.Contains("foobar", "baz")) // false
    
  • strings.HasPrefix

    fmt.Println(strings.HasPrefix("foobar", "foo")) // true
    fmt.Println(strings.HasPrefix("foobar", "baz")) // false
    
  • strings.HasSuffix

    fmt.Println(strings.HasSuffix("foobar", "bar")) // true
    fmt.Println(strings.HasSuffix("foobar", "baz")) // false
    
  • strings.Join

    ss := []string{"foo", "bar", "bar"}
    fmt.Println(strings.Join(ss, ", ")) // foo, bar, baz
    
  • strings.Replace

    fmt.Println(strings.Replace("foobar", "bar", "baz", 1)) // foobaz
    
  • strings.Split

    s := "foo, bar, bar"
    fmt.Println(strings.Split(s, ", ")) // [foo bar baz]
    
  • strings.ToLower

    fmt.Println(strings.ToLower("FOOBAR")) // foobar
    
  • strings.ToUpper

    fmt.Println(strings.ToUpper("foobar")) // FOOBAR
    
  • strings.TrimSpace

    fmt.Println(strings.TrimSpace("  foobar  ")) // foobar
    

その他: https : //golang.org/pkg/strings/



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow