18c0693f

Ñèìâîëû (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 ñèìâîëîâ.




Âñå ïóáëèêàöèè ðàçäåëà