| // 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 | |
| } |