|  | // Copyright 2015 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 unicode_test | 
|  |  | 
|  | import ( | 
|  | "fmt" | 
|  | "unicode" | 
|  | ) | 
|  |  | 
|  | // Functions starting with "Is" can be used to inspect which table of range a | 
|  | // rune belongs to. Note that runes may fit into more than one range. | 
|  | func Example_is() { | 
|  |  | 
|  | // constant with mixed type runes | 
|  | const mixed = "\b5Ὂg̀9! ℃ᾭG" | 
|  | for _, c := range mixed { | 
|  | fmt.Printf("For %q:\n", c) | 
|  | if unicode.IsControl(c) { | 
|  | fmt.Println("\tis control rune") | 
|  | } | 
|  | if unicode.IsDigit(c) { | 
|  | fmt.Println("\tis digit rune") | 
|  | } | 
|  | if unicode.IsGraphic(c) { | 
|  | fmt.Println("\tis graphic rune") | 
|  | } | 
|  | if unicode.IsLetter(c) { | 
|  | fmt.Println("\tis letter rune") | 
|  | } | 
|  | if unicode.IsLower(c) { | 
|  | fmt.Println("\tis lower case rune") | 
|  | } | 
|  | if unicode.IsMark(c) { | 
|  | fmt.Println("\tis mark rune") | 
|  | } | 
|  | if unicode.IsNumber(c) { | 
|  | fmt.Println("\tis number rune") | 
|  | } | 
|  | if unicode.IsPrint(c) { | 
|  | fmt.Println("\tis printable rune") | 
|  | } | 
|  | if !unicode.IsPrint(c) { | 
|  | fmt.Println("\tis not printable rune") | 
|  | } | 
|  | if unicode.IsPunct(c) { | 
|  | fmt.Println("\tis punct rune") | 
|  | } | 
|  | if unicode.IsSpace(c) { | 
|  | fmt.Println("\tis space rune") | 
|  | } | 
|  | if unicode.IsSymbol(c) { | 
|  | fmt.Println("\tis symbol rune") | 
|  | } | 
|  | if unicode.IsTitle(c) { | 
|  | fmt.Println("\tis title case rune") | 
|  | } | 
|  | if unicode.IsUpper(c) { | 
|  | fmt.Println("\tis upper case rune") | 
|  | } | 
|  | } | 
|  |  | 
|  | // Output: | 
|  | // For '\b': | 
|  | // 	is control rune | 
|  | // 	is not printable rune | 
|  | // For '5': | 
|  | // 	is digit rune | 
|  | // 	is graphic rune | 
|  | // 	is number rune | 
|  | // 	is printable rune | 
|  | // For 'Ὂ': | 
|  | // 	is graphic rune | 
|  | // 	is letter rune | 
|  | // 	is printable rune | 
|  | // 	is upper case rune | 
|  | // For 'g': | 
|  | // 	is graphic rune | 
|  | // 	is letter rune | 
|  | // 	is lower case rune | 
|  | // 	is printable rune | 
|  | // For '̀': | 
|  | // 	is graphic rune | 
|  | // 	is mark rune | 
|  | // 	is printable rune | 
|  | // For '9': | 
|  | // 	is digit rune | 
|  | // 	is graphic rune | 
|  | // 	is number rune | 
|  | // 	is printable rune | 
|  | // For '!': | 
|  | // 	is graphic rune | 
|  | // 	is printable rune | 
|  | // 	is punct rune | 
|  | // For ' ': | 
|  | // 	is graphic rune | 
|  | // 	is printable rune | 
|  | // 	is space rune | 
|  | // For '℃': | 
|  | // 	is graphic rune | 
|  | // 	is printable rune | 
|  | // 	is symbol rune | 
|  | // For 'ᾭ': | 
|  | // 	is graphic rune | 
|  | // 	is letter rune | 
|  | // 	is printable rune | 
|  | // 	is title case rune | 
|  | // For 'G': | 
|  | // 	is graphic rune | 
|  | // 	is letter rune | 
|  | // 	is printable rune | 
|  | // 	is upper case rune | 
|  | } | 
|  |  | 
|  | func ExampleSimpleFold() { | 
|  | fmt.Printf("%#U\n", unicode.SimpleFold('A'))      // 'a' | 
|  | fmt.Printf("%#U\n", unicode.SimpleFold('a'))      // 'A' | 
|  | fmt.Printf("%#U\n", unicode.SimpleFold('K'))      // 'k' | 
|  | fmt.Printf("%#U\n", unicode.SimpleFold('k'))      // '\u212A' (Kelvin symbol, K) | 
|  | fmt.Printf("%#U\n", unicode.SimpleFold('\u212A')) // 'K' | 
|  | fmt.Printf("%#U\n", unicode.SimpleFold('1'))      // '1' | 
|  |  | 
|  | // Output: | 
|  | // U+0061 'a' | 
|  | // U+0041 'A' | 
|  | // U+006B 'k' | 
|  | // U+212A 'K' | 
|  | // U+004B 'K' | 
|  | // U+0031 '1' | 
|  | } | 
|  |  | 
|  | func ExampleTo() { | 
|  | const lcG = 'g' | 
|  | fmt.Printf("%#U\n", unicode.To(unicode.UpperCase, lcG)) | 
|  | fmt.Printf("%#U\n", unicode.To(unicode.LowerCase, lcG)) | 
|  | fmt.Printf("%#U\n", unicode.To(unicode.TitleCase, lcG)) | 
|  |  | 
|  | const ucG = 'G' | 
|  | fmt.Printf("%#U\n", unicode.To(unicode.UpperCase, ucG)) | 
|  | fmt.Printf("%#U\n", unicode.To(unicode.LowerCase, ucG)) | 
|  | fmt.Printf("%#U\n", unicode.To(unicode.TitleCase, ucG)) | 
|  |  | 
|  | // Output: | 
|  | // U+0047 'G' | 
|  | // U+0067 'g' | 
|  | // U+0047 'G' | 
|  | // U+0047 'G' | 
|  | // U+0067 'g' | 
|  | // U+0047 'G' | 
|  | } | 
|  |  | 
|  | func ExampleToLower() { | 
|  | const ucG = 'G' | 
|  | fmt.Printf("%#U\n", unicode.ToLower(ucG)) | 
|  |  | 
|  | // Output: | 
|  | // U+0067 'g' | 
|  | } | 
|  | func ExampleToTitle() { | 
|  | const ucG = 'g' | 
|  | fmt.Printf("%#U\n", unicode.ToTitle(ucG)) | 
|  |  | 
|  | // Output: | 
|  | // U+0047 'G' | 
|  | } | 
|  |  | 
|  | func ExampleToUpper() { | 
|  | const ucG = 'g' | 
|  | fmt.Printf("%#U\n", unicode.ToUpper(ucG)) | 
|  |  | 
|  | // Output: | 
|  | // U+0047 'G' | 
|  | } | 
|  |  | 
|  | func ExampleSpecialCase() { | 
|  | t := unicode.TurkishCase | 
|  |  | 
|  | const lci = 'i' | 
|  | fmt.Printf("%#U\n", t.ToLower(lci)) | 
|  | fmt.Printf("%#U\n", t.ToTitle(lci)) | 
|  | fmt.Printf("%#U\n", t.ToUpper(lci)) | 
|  |  | 
|  | const uci = 'İ' | 
|  | fmt.Printf("%#U\n", t.ToLower(uci)) | 
|  | fmt.Printf("%#U\n", t.ToTitle(uci)) | 
|  | fmt.Printf("%#U\n", t.ToUpper(uci)) | 
|  |  | 
|  | // Output: | 
|  | // U+0069 'i' | 
|  | // U+0130 'İ' | 
|  | // U+0130 'İ' | 
|  | // U+0069 'i' | 
|  | // U+0130 'İ' | 
|  | // U+0130 'İ' | 
|  | } | 
|  |  | 
|  | func ExampleIsDigit() { | 
|  | fmt.Printf("%t\n", unicode.IsDigit('৩')) | 
|  | fmt.Printf("%t\n", unicode.IsDigit('A')) | 
|  | // Output: | 
|  | // true | 
|  | // false | 
|  | } | 
|  |  | 
|  | func ExampleIsNumber() { | 
|  | fmt.Printf("%t\n", unicode.IsNumber('Ⅷ')) | 
|  | fmt.Printf("%t\n", unicode.IsNumber('A')) | 
|  | // Output: | 
|  | // true | 
|  | // false | 
|  | } | 
|  |  | 
|  | func ExampleIsLetter() { | 
|  | fmt.Printf("%t\n", unicode.IsLetter('A')) | 
|  | fmt.Printf("%t\n", unicode.IsLetter('7')) | 
|  | // Output: | 
|  | // true | 
|  | // false | 
|  | } | 
|  |  | 
|  | func ExampleIsLower() { | 
|  | fmt.Printf("%t\n", unicode.IsLower('a')) | 
|  | fmt.Printf("%t\n", unicode.IsLower('A')) | 
|  | // Output: | 
|  | // true | 
|  | // false | 
|  | } | 
|  |  | 
|  | func ExampleIsUpper() { | 
|  | fmt.Printf("%t\n", unicode.IsUpper('A')) | 
|  | fmt.Printf("%t\n", unicode.IsUpper('a')) | 
|  | // Output: | 
|  | // true | 
|  | // false | 
|  | } | 
|  |  | 
|  | func ExampleIsTitle() { | 
|  | fmt.Printf("%t\n", unicode.IsTitle('Dž')) | 
|  | fmt.Printf("%t\n", unicode.IsTitle('a')) | 
|  | // Output: | 
|  | // true | 
|  | // false | 
|  | } | 
|  |  | 
|  | func ExampleIsSpace() { | 
|  | fmt.Printf("%t\n", unicode.IsSpace(' ')) | 
|  | fmt.Printf("%t\n", unicode.IsSpace('\n')) | 
|  | fmt.Printf("%t\n", unicode.IsSpace('\t')) | 
|  | fmt.Printf("%t\n", unicode.IsSpace('a')) | 
|  | // Output: | 
|  | // true | 
|  | // true | 
|  | // true | 
|  | // false | 
|  | } |