blob: 50c5b18a48e63d8269996a21e810fbface9e6acf [file] [log] [blame]
Carlos Cirello0e771c72015-08-26 22:57:52 +02001// Copyright 2015 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package unicode_test
6
7import (
8 "fmt"
9 "unicode"
10)
11
12// Functions starting with "Is" can be used to inspect which table of range a
13// rune belongs to. Note that runes may fit into more than one range.
14func Example_is() {
Joe Tsaib53088a2017-12-01 00:59:45 +000015
Carlos Cirello0e771c72015-08-26 22:57:52 +020016 // constant with mixed type runes
17 const mixed = "\b5Ὂg̀9! ℃ᾭG"
18 for _, c := range mixed {
19 fmt.Printf("For %q:\n", c)
20 if unicode.IsControl(c) {
21 fmt.Println("\tis control rune")
22 }
23 if unicode.IsDigit(c) {
24 fmt.Println("\tis digit rune")
25 }
26 if unicode.IsGraphic(c) {
27 fmt.Println("\tis graphic rune")
28 }
29 if unicode.IsLetter(c) {
30 fmt.Println("\tis letter rune")
31 }
32 if unicode.IsLower(c) {
33 fmt.Println("\tis lower case rune")
34 }
35 if unicode.IsMark(c) {
36 fmt.Println("\tis mark rune")
37 }
38 if unicode.IsNumber(c) {
39 fmt.Println("\tis number rune")
40 }
41 if unicode.IsPrint(c) {
42 fmt.Println("\tis printable rune")
43 }
44 if !unicode.IsPrint(c) {
45 fmt.Println("\tis not printable rune")
46 }
47 if unicode.IsPunct(c) {
48 fmt.Println("\tis punct rune")
49 }
50 if unicode.IsSpace(c) {
51 fmt.Println("\tis space rune")
52 }
53 if unicode.IsSymbol(c) {
54 fmt.Println("\tis symbol rune")
55 }
56 if unicode.IsTitle(c) {
57 fmt.Println("\tis title case rune")
58 }
59 if unicode.IsUpper(c) {
60 fmt.Println("\tis upper case rune")
61 }
62 }
63
64 // Output:
65 // For '\b':
66 // is control rune
67 // is not printable rune
68 // For '5':
69 // is digit rune
70 // is graphic rune
71 // is number rune
72 // is printable rune
73 // For 'Ὂ':
74 // is graphic rune
75 // is letter rune
76 // is printable rune
77 // is upper case rune
78 // For 'g':
79 // is graphic rune
80 // is letter rune
81 // is lower case rune
82 // is printable rune
83 // For '̀':
84 // is graphic rune
85 // is mark rune
86 // is printable rune
87 // For '9':
88 // is digit rune
89 // is graphic rune
90 // is number rune
91 // is printable rune
92 // For '!':
93 // is graphic rune
94 // is printable rune
95 // is punct rune
96 // For ' ':
97 // is graphic rune
98 // is printable rune
99 // is space rune
100 // For '℃':
101 // is graphic rune
102 // is printable rune
103 // is symbol rune
104 // For 'ᾭ':
105 // is graphic rune
106 // is letter rune
107 // is printable rune
108 // is title case rune
109 // For 'G':
110 // is graphic rune
111 // is letter rune
112 // is printable rune
113 // is upper case rune
114}
115
116func ExampleSimpleFold() {
117 fmt.Printf("%#U\n", unicode.SimpleFold('A')) // 'a'
118 fmt.Printf("%#U\n", unicode.SimpleFold('a')) // 'A'
119 fmt.Printf("%#U\n", unicode.SimpleFold('K')) // 'k'
120 fmt.Printf("%#U\n", unicode.SimpleFold('k')) // '\u212A' (Kelvin symbol, K)
121 fmt.Printf("%#U\n", unicode.SimpleFold('\u212A')) // 'K'
122 fmt.Printf("%#U\n", unicode.SimpleFold('1')) // '1'
123
124 // Output:
125 // U+0061 'a'
126 // U+0041 'A'
127 // U+006B 'k'
128 // U+212A 'K'
129 // U+004B 'K'
130 // U+0031 '1'
131}
132
133func ExampleTo() {
134 const lcG = 'g'
135 fmt.Printf("%#U\n", unicode.To(unicode.UpperCase, lcG))
136 fmt.Printf("%#U\n", unicode.To(unicode.LowerCase, lcG))
137 fmt.Printf("%#U\n", unicode.To(unicode.TitleCase, lcG))
138
139 const ucG = 'G'
140 fmt.Printf("%#U\n", unicode.To(unicode.UpperCase, ucG))
141 fmt.Printf("%#U\n", unicode.To(unicode.LowerCase, ucG))
142 fmt.Printf("%#U\n", unicode.To(unicode.TitleCase, ucG))
143
144 // Output:
145 // U+0047 'G'
146 // U+0067 'g'
147 // U+0047 'G'
148 // U+0047 'G'
149 // U+0067 'g'
150 // U+0047 'G'
151}
152
153func ExampleToLower() {
154 const ucG = 'G'
155 fmt.Printf("%#U\n", unicode.ToLower(ucG))
156
157 // Output:
158 // U+0067 'g'
159}
160func ExampleToTitle() {
161 const ucG = 'g'
162 fmt.Printf("%#U\n", unicode.ToTitle(ucG))
163
164 // Output:
165 // U+0047 'G'
166}
167
168func ExampleToUpper() {
169 const ucG = 'g'
170 fmt.Printf("%#U\n", unicode.ToUpper(ucG))
171
172 // Output:
173 // U+0047 'G'
174}
175
176func ExampleSpecialCase() {
177 t := unicode.TurkishCase
178
179 const lci = 'i'
180 fmt.Printf("%#U\n", t.ToLower(lci))
181 fmt.Printf("%#U\n", t.ToTitle(lci))
182 fmt.Printf("%#U\n", t.ToUpper(lci))
183
184 const uci = 'İ'
185 fmt.Printf("%#U\n", t.ToLower(uci))
186 fmt.Printf("%#U\n", t.ToTitle(uci))
187 fmt.Printf("%#U\n", t.ToUpper(uci))
188
189 // Output:
190 // U+0069 'i'
191 // U+0130 'İ'
192 // U+0130 'İ'
193 // U+0069 'i'
194 // U+0130 'İ'
195 // U+0130 'İ'
196}