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