mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			197 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
// Copyright 2013 The Go Authors. All rights reserved.
 | 
						|
// Use of this source code is governed by a BSD-style
 | 
						|
// license that can be found in the LICENSE file.
 | 
						|
 | 
						|
package utf8_test
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"unicode/utf8"
 | 
						|
)
 | 
						|
 | 
						|
func ExampleDecodeLastRune() {
 | 
						|
	b := []byte("Hello, 世界")
 | 
						|
 | 
						|
	for len(b) > 0 {
 | 
						|
		r, size := utf8.DecodeLastRune(b)
 | 
						|
		fmt.Printf("%c %v\n", r, size)
 | 
						|
 | 
						|
		b = b[:len(b)-size]
 | 
						|
	}
 | 
						|
	// Output:
 | 
						|
	// 界 3
 | 
						|
	// 世 3
 | 
						|
	//   1
 | 
						|
	// , 1
 | 
						|
	// o 1
 | 
						|
	// l 1
 | 
						|
	// l 1
 | 
						|
	// e 1
 | 
						|
	// H 1
 | 
						|
}
 | 
						|
 | 
						|
func ExampleDecodeLastRuneInString() {
 | 
						|
	str := "Hello, 世界"
 | 
						|
 | 
						|
	for len(str) > 0 {
 | 
						|
		r, size := utf8.DecodeLastRuneInString(str)
 | 
						|
		fmt.Printf("%c %v\n", r, size)
 | 
						|
 | 
						|
		str = str[:len(str)-size]
 | 
						|
	}
 | 
						|
	// Output:
 | 
						|
	// 界 3
 | 
						|
	// 世 3
 | 
						|
	//   1
 | 
						|
	// , 1
 | 
						|
	// o 1
 | 
						|
	// l 1
 | 
						|
	// l 1
 | 
						|
	// e 1
 | 
						|
	// H 1
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
func ExampleDecodeRune() {
 | 
						|
	b := []byte("Hello, 世界")
 | 
						|
 | 
						|
	for len(b) > 0 {
 | 
						|
		r, size := utf8.DecodeRune(b)
 | 
						|
		fmt.Printf("%c %v\n", r, size)
 | 
						|
 | 
						|
		b = b[size:]
 | 
						|
	}
 | 
						|
	// Output:
 | 
						|
	// H 1
 | 
						|
	// e 1
 | 
						|
	// l 1
 | 
						|
	// l 1
 | 
						|
	// o 1
 | 
						|
	// , 1
 | 
						|
	//   1
 | 
						|
	// 世 3
 | 
						|
	// 界 3
 | 
						|
}
 | 
						|
 | 
						|
func ExampleDecodeRuneInString() {
 | 
						|
	str := "Hello, 世界"
 | 
						|
 | 
						|
	for len(str) > 0 {
 | 
						|
		r, size := utf8.DecodeRuneInString(str)
 | 
						|
		fmt.Printf("%c %v\n", r, size)
 | 
						|
 | 
						|
		str = str[size:]
 | 
						|
	}
 | 
						|
	// Output:
 | 
						|
	// H 1
 | 
						|
	// e 1
 | 
						|
	// l 1
 | 
						|
	// l 1
 | 
						|
	// o 1
 | 
						|
	// , 1
 | 
						|
	//   1
 | 
						|
	// 世 3
 | 
						|
	// 界 3
 | 
						|
}
 | 
						|
 | 
						|
func ExampleEncodeRune() {
 | 
						|
	r := '世'
 | 
						|
	buf := make([]byte, 3)
 | 
						|
 | 
						|
	n := utf8.EncodeRune(buf, r)
 | 
						|
 | 
						|
	fmt.Println(buf)
 | 
						|
	fmt.Println(n)
 | 
						|
	// Output:
 | 
						|
	// [228 184 150]
 | 
						|
	// 3
 | 
						|
}
 | 
						|
 | 
						|
func ExampleFullRune() {
 | 
						|
	buf := []byte{228, 184, 150} // 世
 | 
						|
	fmt.Println(utf8.FullRune(buf))
 | 
						|
	fmt.Println(utf8.FullRune(buf[:2]))
 | 
						|
	// Output:
 | 
						|
	// true
 | 
						|
	// false
 | 
						|
}
 | 
						|
 | 
						|
func ExampleFullRuneInString() {
 | 
						|
	str := "世"
 | 
						|
	fmt.Println(utf8.FullRuneInString(str))
 | 
						|
	fmt.Println(utf8.FullRuneInString(str[:2]))
 | 
						|
	// Output:
 | 
						|
	// true
 | 
						|
	// false
 | 
						|
}
 | 
						|
 | 
						|
func ExampleRuneCount() {
 | 
						|
	buf := []byte("Hello, 世界")
 | 
						|
	fmt.Println("bytes =", len(buf))
 | 
						|
	fmt.Println("runes =", utf8.RuneCount(buf))
 | 
						|
	// Output:
 | 
						|
	// bytes = 13
 | 
						|
	// runes = 9
 | 
						|
}
 | 
						|
 | 
						|
func ExampleRuneCountInString() {
 | 
						|
	str := "Hello, 世界"
 | 
						|
	fmt.Println("bytes =", len(str))
 | 
						|
	fmt.Println("runes =", utf8.RuneCountInString(str))
 | 
						|
	// Output:
 | 
						|
	// bytes = 13
 | 
						|
	// runes = 9
 | 
						|
}
 | 
						|
 | 
						|
func ExampleRuneLen() {
 | 
						|
	fmt.Println(utf8.RuneLen('a'))
 | 
						|
	fmt.Println(utf8.RuneLen('界'))
 | 
						|
	// Output:
 | 
						|
	// 1
 | 
						|
	// 3
 | 
						|
}
 | 
						|
 | 
						|
func ExampleRuneStart() {
 | 
						|
	buf := []byte("a界")
 | 
						|
	fmt.Println(utf8.RuneStart(buf[0]))
 | 
						|
	fmt.Println(utf8.RuneStart(buf[1]))
 | 
						|
	fmt.Println(utf8.RuneStart(buf[2]))
 | 
						|
	// Output:
 | 
						|
	// true
 | 
						|
	// true
 | 
						|
	// false
 | 
						|
}
 | 
						|
 | 
						|
func ExampleValid() {
 | 
						|
	valid := []byte("Hello, 世界")
 | 
						|
	invalid := []byte{0xff, 0xfe, 0xfd}
 | 
						|
 | 
						|
	fmt.Println(utf8.Valid(valid))
 | 
						|
	fmt.Println(utf8.Valid(invalid))
 | 
						|
	// Output:
 | 
						|
	// true
 | 
						|
	// false
 | 
						|
}
 | 
						|
 | 
						|
func ExampleValidRune() {
 | 
						|
	valid := 'a'
 | 
						|
	invalid := rune(0xfffffff)
 | 
						|
 | 
						|
	fmt.Println(utf8.ValidRune(valid))
 | 
						|
	fmt.Println(utf8.ValidRune(invalid))
 | 
						|
	// Output:
 | 
						|
	// true
 | 
						|
	// false
 | 
						|
}
 | 
						|
 | 
						|
func ExampleValidString() {
 | 
						|
	valid := "Hello, 世界"
 | 
						|
	invalid := string([]byte{0xff, 0xfe, 0xfd})
 | 
						|
 | 
						|
	fmt.Println(utf8.ValidString(valid))
 | 
						|
	fmt.Println(utf8.ValidString(invalid))
 | 
						|
	// Output:
 | 
						|
	// true
 | 
						|
	// false
 | 
						|
}
 |