Ñèìâîëû (Char) Ìåòîäû ñòðóêòóðû Char
Ïåðåìåííóþ ìîæíî îáúÿâèòü ñïåöèàëüíûì ñèìâîëüíûì òèïîì – Char. Ïîä ñèìâîëîì ìû ïîíèìàåì ëþáóþ áóêâó, öèôðó, çíàê ïðåïèíàíèÿ èëè äðóãîé çíàê íà êëàâèàòóðå è íå òîëüêî íà êëàâèàòóðå.
 ïåðâîì ïðèáëèæåíèè ìîæíî ñ÷èòàòü, ÷òî ñèìâîë – ýòî ñòðîêà äëèíû 1. Îáúÿâèì äëÿ ïðèìåðà äâå ïåðåìåííûå:
Dim s As String = "Ø"
Dim c As Char = "Ø"
 áîëüøèíñòâå ñëó÷àåâ âñëåäñòâèå íåÿâíîãî ïðåîáðàçîâàíèÿ òèïîâ ýòè äâå ïåðåìåííûå âåäóò ñåáÿ îäèíàêîâî.
Ìåòîäû ñòðóêòóðû Char.  ïðîñòðàíñòâå èìåí System èìååòñÿ ñòðóêòóðà Char, îáëàäàþùàÿ ðÿäîì ïîëåçíûõ ìåòîäîâ äëÿ ðàáîòû ñ ñèìâîëàìè. Î íèõ ÿ óæå ãîâîðèë â 14.3.1. Ñåé÷àñ ïðîñòî ïîâòîðþñü:
Dim Ñèìâîë As Char = "Æ"
Debug.WriteLine("Íàáðàí ñèìâîë " & Ñèìâîë)
Debug.WriteLine("Ýòî öèôðà? " & Char.IsDigit(Ñèìâîë))
Debug.WriteLine("Ýòî áóêâà? " & Char.IsLetter(Ñèìâîë))
Debug.WriteLine("Ïðàâäà ëè, ÷òî ýòî áóêâà èëè öèôðà? " & Char.IsLetterOrDigit(Ñèìâîë))
Debug.WriteLine("Ýòî ñòðî÷íàÿ áóêâà? " & Char.IsLower(Ñèìâîë))
Debug.WriteLine("Ýòî çàãëàâíàÿ áóêâà? " & Char.IsUpper(Ñèìâîë))
Debug.WriteLine("Ýòî çíàê ïðåïèíàíèÿ? " & Char.IsPunctuation(Ñèìâîë))
Debug.WriteLine("Ýòî ïðîáåë? " & Char.IsSeparator(Ñèìâîë))
Debug.WriteLine("Ïðåâðàòèòü â ñòðî÷íóþ " & Char.ToLower(Ñèìâîë))
Debug.WriteLine("Ïðåâðàòèòü â çàãëàâíóþ " & Char.ToUpper(Ñèìâîë))
Âîò ÷òî íàïå÷àòàåò ýòîò ôðàãìåíò:
Íàáðàí ñèìâîë Æ
Ýòî öèôðà? False
Ýòî áóêâà? True
Ïðàâäà ëè, ÷òî ýòî áóêâà èëè öèôðà? True
Ýòî ñòðî÷íàÿ áóêâà? False
Ýòî çàãëàâíàÿ áóêâà? True
Ýòî çíàê ïðåïèíàíèÿ? False
Ýòî ïðîáåë? False
Ïðåâðàòèòü â ñòðî÷íóþ æ
Ïðåâðàòèòü â çàãëàâíóþ Æ
Unicode ñèìâîëû. Ïåðåìåííàÿ òèïà Char íûí÷å çàíèìàåò â ïàìÿòè 2 áàéòà, è ïîýòîìó â ñîâðåìåííîé Windows íàñ÷èòûâàåòñÿ 65536 ñèìâîëîâ. Ýòî òàê íàçûâàåìûå
Unicode ñèìâîëû. Îíè ïðîíóìåðîâàíû îò 0 äî 65535. Ïîðÿäêîâûé íîìåð ëþáîãî Unicode ñèìâîëà íàì ñîîáùàåò ôóíêöèÿ
AscW ìîäóëÿ Strings. Ôóíêöèÿ æå
ChrW ýòîãî ìîäóëÿ íàîáîðîò – ïî íîìåðó ñîîáùàåò ñèìâîë:
Ôóíêöèÿ
|
Ðåçóëüòàò
|
Ïîÿñíåíèå
|
AscW ("Ø")
|
1064
|
Áóêâà Ø èìååò íîìåð 1064
|
ChrW (1064)
|
Ø
|
Íîìåð 1064 ñîîòâåòñòâóåò áóêâå Ø
|
Âîò ïðîöåäóðà, ðàñïå÷àòûâàþùàÿ ñèìâîëû ñ 0-ãî ïî 1200-é, ïðè ýòîì ïî 64 ñèìâîëà â ñòðîêó ïå÷àòè:
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim Êîä As Long
Dim Ñèìâîë As Char
For Êîä = 0 To 1200
Ñèìâîë = ChrW(Êîä)
Debug.Write(Ñèìâîë)
If Êîä Mod 64 = 0 Then Debug.WriteLine("")
Next
End Sub
Âîò íåêîòîðûå ôðàãìåíòû èç òîãî, ÷òî áóäåò ðàñïå÷àòàíî ýòîé ïðîöåäóðîé:
!"#$%&'()*+,-./0123456789:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿À
ÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿA
????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????
¨€�ª½²¯£ŠŒŽ�?¡�ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïð
ñòóôõö÷øùúûüýþÿ?¸�ƒº¾³
Âû âèäèòå çäåñü âñå öèôðû, çíàêè ïðåïèíàíèÿ, çàãëàâíûå è ñòðî÷íûå áóêâû ëàòèíñêîãî, ãðå÷åñêîãî è ðóññêîãî àëôàâèòîâ. À òàêæå âèäîèçìåíåííûå ëàòèíñêèå áóêâû äëÿ àëôàâèòîâ íåêîòîðûõ ñòðàí Åâðîïû è ìèðà. Åñëè âû çàáåðåòåñü äàëüøå 1200-ãî ñèìâîëà, òî óâèäèòå è àðàáñêóþ âÿçü, è èåðîãëèôû, è äðóãèå àëôàâèòû, è ïðîñòî ïîïóëÿðíûå çíà÷êè:
? ? ? ? ? ?????????? ? ? ? ? ? ? ? ? ? ?
???????????????????? ?????????????????????????????????
?OO0???+?>?????????????????????????????
?????????????????????????????????????????
????????????? ¦??¦?¦¦???dd????
ASCII ñèìâîëû. Ðàíüøå ïåðåìåííàÿ òèïà Char çàíèìàëà â ïàìÿòè 1 áàéò, è ïîýòîìó ñèìâîëîâ íàñ÷èòûâàëîñü òîëüêî 256. Îíè áûëè ñâåäåíû â òàê íàçûâàåìóþ ASCII-òàáëèöó. Ïîñêîëüêó â íåå íåëüçÿ áûëî âòèñíóòü âñå ÿçûêè ìèðà, òî äëÿ ðàçíûõ ñòðàí ñèìâîëû òàáëèöû ñî 128 ïî 255 ìîãëè áûòü ðàçíûå. È ñåãîäíÿ ìû ìîæåì ïî-ñòàðèíêå ïîëüçîâàòüñÿ ASCII-òàáëèöåé.  ýòîì íàì ïîìîãóò äâå ôóíêöèè. Ïîðÿäêîâûé íîìåð ëþáîãî ñèìâîëà â ASCII-òàáëèöå íàì ñîîáùàåò ôóíêöèÿ
Asc ìîäóëÿ Strings. Ôóíêöèÿ æå
Chr ýòîãî ìîäóëÿ íàîáîðîò – ïî íîìåðó ñîîáùàåò ñèìâîë:
Ôóíêöèÿ
|
Ðåçóëüòàò
|
Ïîÿñíåíèå
|
Asc ("Û")
|
219
|
Áóêâà Û èìååò íîìåð 219
|
Chr (219)
|
Û
|
Íîìåð 219 ñîîòâåòñòâóåò áóêâå Û
|
Âîò ïðîöåäóðà, ðàñïå÷àòûâàþùàÿ ñèìâîëû ñ 32-ãî ïî 255-é:
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim Êîä As Long
For Êîä = 32 To 255
Debug.Write(
Chr(Êîä))
Next
End Sub
Âîò ÷òî áóäåò ðàñïå÷àòàíî ýòîé ïðîöåäóðîé:
!"#$%&'()*+,-./0123456789:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿
ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
Êàê âèäèòå, ðóññêèå áóêâû (êèðèëëèöà) ðàñïîëîæåíû çäåñü ñîâñåì ïîä äðóãèìè íîìåðàìè, ÷åì â èïîñòàñè Unicode ñèìâîëîâ.
Âñå ïóáëèêàöèè ðàçäåëà