Главная страница

8 лекция_kaz22 Тіркестер (4). Лекция C# тілінде тіркестерді деу Сратар Символдар, тіркестер туралы Символдар жне тіркестер енгізу Символдарды басару тізбектері


Скачать 310.5 Kb.
НазваниеЛекция C# тілінде тіркестерді деу Сратар Символдар, тіркестер туралы Символдар жне тіркестер енгізу Символдарды басару тізбектері
Дата06.10.2022
Размер310.5 Kb.
Формат файлаpptx
Имя файла8 лекция_kaz22 Тіркестер (4).pptx
ТипЛекция
#717776



8-лекция

C# тілінде

тіркестерді

өңдеу



Сұрақтар:

1. Символдар, тіркестер туралы

2. Символдар және тіркестер енгізу

3. Символдарды басқару тізбектері

4. Символдар тіркестері (тіркестер)

5. Тіркестерді құру

6. Тіркестермен операциялар орындау

7. Тіркестерге есеп шығару мысалдары

8. Тіркестерді салыстыру

9. System.String класындағы тіркестерде жиі қолданылатын әдістер

10. Тіркестер жиымдары

11. Тіркестер тұрақтылығы

12. switch операторында тіркестерді қолдану

1. Символдар, тіркестер туралы

Тіркестер немесе символдар тіркестері таңбаларды біріктіру арқылы құрастырылады. Мәліметтердің тіркестік (строковый) типі – string – символдар тіркесін анықтайды.

Көптеген тілдерде тіркес символдар жиымы ретінде қарастырылады. Ал жеке символдар стандартты char типі арқылы анықталады да, олар апострофқа ('g') алынып жазылады.

C# тілінде жеке символдар басқа программалау тіл-деріндегі тәрізді, 8-разрядтық кодпен (битпен) емес, уникод (Unicode) деп аталатын 16-разрядтық кодпен беріледі.

Уникодтағы символдар жиыны кеңейтілген түрде бейнеленеді де, онда әлемдегі барлық табиғи тілдердің символдары (мысалы, қытай) толығынан қамтылған деуге болады.

char типі таңбасыз 16-разрядты мәндерді бейнелей ала­тын 0 мен 65 535 арасындағы бүтін сандар жиынын қамтиды. Мұнда ASCII-кодтағы 8-разрядты стандартты символдар жиыны уни­код­та 0 мен 127 арасындағы бүтін сандар арқылы бейнеленетін оның ішкі бөлігі болып та-былады. Сондықтан, ASCII-код символдары С# тілінде де бұрынғыша толық қолданыста болады.

Айнымалыға символды меншіктеу үшін сол символ-ды апострофпен қоршап жазу жеткілікті.

Мысалы, төменде келтірілген код фрагментінде ch айнымалысына X символы меншіктеледі.

char ch; ch = 'X';

char типіндегі мәнді экранға WriteLine() әдісі арқылы шығаруға болады. Мысалы, келесі код жолында экранға ch айнымалысының мәні шығарылады.

Console.WriteLine ("ch mani = " + ch);

C# тілінде char типінің бүтін сандық типтерге де қатысты болуына (0..65536) қара­мастан, оны қалған барлық бүтін сандық типтермен шатастырмау керек. Жалпы C# тілінде сим­вол­дық мәндерді бүтін сандық типтерге және кері бағыт-та автоматты түрлендіру орындалмайды.

Мысалы, келесі код фрагментінде қате бар.

char ch;

ch = 88; // қате, бұл орындалмайды

char типі таңбасыз 16-разрядты мәндерді бейнелей ала­тын 0 мен 65 535 арасындағы бүтін сандар жиынын қамтиды. Мұнда ASCII-кодтағы 8-разрядты стандартты символдар жиыны уни­код­та 0 мен 127 арасындағы бүтін сандар арқылы бейнеленетін оның ішкі бөлігі болып табылады. Сондықтан, ASCII-код символдары С# тілінде де бұрынғыша толық қолданыста бола береді.

2. Символдар және тіркестер енгізу

Console класында 3 енгізу әдісі (ReadKey, Read, ReadLine) анықталған. Read әдісі консольден бір символ енгізуді орындайды. Ол жеке символды int типінде қабылдайды, сондықтан оны char типіне келтіру керек. Символ енгізілген соң, Enter пернесі басылуы тиіс. Мысал келтірейік.

// Console.Read() арқылы енгiзiлген символды оқу.

using System;

 class Perne {

static void Main() {

char ch;

  Console.Write("Символ енгiзiп, басу керек: ");

  ch = (char)Console.Read(); // int типін char типіне келтіру

Console.WriteLine(ch + " пернесi басылды ");

Console.ReadKey();

}

}

Символдар тіркесін енгізуді ReadLine әдісі орындайды. Символдарды енгізу Enter басылғанша жүргізіледі де, олар string типінде қабылданады. Сондықтан түрлендіру (Parse, ConvertTo) қажет етілмейді. Мысал келтірейік.

// ReadLine() әдiсi арқылы консольден тiркес енгiзу

using System;

class ReadString

{ static void Main()

{ string str;

  Console.Write("Символдар тiркесiн енгiзу керек:");

str = Console.ReadLine();

Console.WriteLine("Енгiзiлген тiркес: " + str);

Console.ReadKey();

}

}

ReadKey() әдісін қолдану
  • .NET Framework ортасында пернетақтадан енгізілген символ­дарды буферсіз тікелей оқи алатын ReadKey() әдісі енгізілген. Пернені басқан кезде ReadKey() әдісі бірден сол терілген символды қайтарады және мұнда қолданушыға қосымша пернесін басу керек емес, яғни енгізілген символ бірден оқылады.
  • Ол орындалған программа нәтижесін қолданушы экранында (қара экранда) оны жаппай ұстап тұру үшін жиі пайдаланылады. Және де толықтыру пернелерінің (Ctrl, Alt, Shift) басылғандығын да білдіреді.
  • Бір мысал келтірейік:

// ReadKey() арқылы енгізілген символдарды оқу

 using System;

 class ReadKeys {

static void Main() {

ConsoleKeyInfo keypress;

Console.WriteLine("Бiрнеше символдар енгiзiп,\n" +

" артынан - басу керек:");

do { //басылған пернелер жайлы мәлімет алу

keypress = Console.ReadKey();

Console.WriteLine(" - " + keypress.KeyChar + " пернеci басылды.");

// Қосымша толықтыру пернелерінің басылғанын тексеру.

if ((ConsoleModifiers.Alt & keypress.Modifiers) != 0)

Console.WriteLine(" пернесi басылды.");

if((ConsoleModifiers.Control & keypress.Modifiers) != 0)

Console.WriteLine(" пернесi басылды.");

if((ConsoleModifiers.Shift & keypress.Modifiers) != 0)

Console.WriteLine(" пернесi басылды.");

} while(keypress.KeyChar != 'Q');

}

}

3. Символдарды басқару тізбектері

Экранға шығарылатын символдардың басым бөлігін жалқы тырнақшаға алып жазу жеткілікті, бірақ кейбір символдарды мәтіндік редакторда теру, мысалы, каретканы қайтару, ерекше қиындықтар туғызады. Оған қоса, басқа бірсыпыра символдар С# тілінде арнайы қызмет атқарады (оның ішінде жалқы және қос тырнақшалар да бар), сондықтан оларды тікелей қолдана беруге болмайды.

Осындай себептерге байланысты C# тілінде арнайы символ­дарды басқару тізбектері деп, ал кейде кері сызықты константалар (8.1 кесте) деп атала­тын арнайы бір топ қарастырылған. Мұндай тізбектер өздері бейнелейтін символ­дар орнына қолданылады.

\t

Көлденең (горизонталь) табуляция

\n

Жаңа жол (келесі жолға көшу)

Басқару тізбегі

Сипаттамасы



Дыбыстық сигнал (қоңырау)

\b

Бір позицияға кері қайту

\f

Парақты ауыстыру (принтерде жаңа бетке көшу)

\n

Жаңа жол (келесі жолға көшу)

\r

Каретканы қайтару

\t

Көлденең (горизонталь) табуляция

\v

Тік (вертикаль) табуляция

\0

Бос символ

\'

Экранға жалқы тырнақша (апостроф) шығару

\"

Экранға қос тырнақша шығару

\\

Экранға кері қиғаш сызық шығару

8.1-кесте. Басқару тізбектері (Esc-тізбектер)

Мысалы, ch айнымалысына табуляция символын меншіктеу:

ch = '\t'; немесе

ch = '\''; // апостроф сим­волы меншік­теу

4. Символдар тіркестері (тіркестер)

C# тілінде кең таралған бір тип – символдардың тіркестік типі пайдаланы­лады. Тіркес немесе символ-дар тіркесі қос тырнақшаға алынып жазылатын сим­волдар жиынынан тұрады. Мысалы, келесі код фрагменті:

"bul test"

мәтіндік тіркес болып табылады. Мұндай тіркес үлгі-лері кез келген программаларда кездескен болатын.

Тіркестер кәдімгі символдардан басқа, бір немесе бірнеше басқаратын символдар тіркесін құрай алады.

Мысал ретінде \n және \t сияқты басқару символдары қолданылатын программа қарас­ты­райық.

// Тіркестерде басқаратын символдар тізбегін қолдану.

using System;

class StrDemo

{ static void Main()

{ Console.WriteLine("Birinshi jol\nEkinshi jol\nUshinshi jol");

Console.WriteLine("Bir\tEki\tUsh");

Console.WriteLine("Tort\tBes\tAlty");

// Қостырнақшалар қою

Console.WriteLine("Ol \"Nege?\", dep surady.");

}

}

Бұл программа нәтижесі:

Мәтін жолдарында қос тырнақша

белгісінің қалай қойылатынына

назар аударыңыздар.

Сөз тіркестерінен тұратын мәліметтердің тіркестік типі – string символдар тіркесін анықтайды. Көптеген програм-малау тілдерінде сөз тіркестері (немесе жай ғана тіркестер) символдар жиымы рөлін атқарады.

Ал C# тілінде тіркестер объектілер болып табылады. Сондықтан string типі сілтемелік типке жатады.

C# тілінде string құрамдас (стандартты) тип болғаны-мен, ол кластарда тіркестік объект ретінде қалыптасады.

Мысалы, келесі кодтағы:

Console.WriteLine("Тіркестер объект болып табылады.");

тырнақша ішіндегі "Тіркестер объект болып табылады." болып жазылған мәтіндік тіркес С# тілі құралдары арқылы автоматты түрде тіркестік объект болып түрлендіріледі.

5. Тіркестерді құру

Символдық тіркестерді құрудың ең жеңіл жолы - оларды тырнақша ішіне жазып айныма-лыға меншіктеу. Мысалы, str тіркесін құрайық.

string str = "Soz tirkesi quryldy.";

str айнымалысы 3 сөзбен инициалданды.

string типіндегі объектіні char типіндегі жиым арқылы да құра аламыз:

char[] charray = {'t', ' е', 's', ' t'};

string str = new string(charray);

Енді string тіркесін керекті жерде пайдалана береміз. Мысалы оны WriteLine () әдісі арқылы экранға шығарайық.

// Символдық тіркес құру, оны шығару.

using System;

class StringDemo {

static void Main() {

char[] charray ={'B','u','l',' ','t','i','r','k','e', 's','.'} ;

string str1 = new string(charray);

string str2 = "Tagy bir tirkes.";

Console.WriteLine(str1);

Console.WriteLine(str2);

}

}

Тіркес ішіндегі жеке символды таңдап алу үшін оның индексі төмендегідей түрде қолда­ны­лады:

string str = "test";

Console.WriteLine(str[0]);

Мұнда экранға тек "t" символы шығарылады, өйткені ол бірінші орында тұр. Жиым­дағы сияқты мұнда да нөмір-леу 0-ден басталады. Бірақ индекс арқылы тіркес сим-волдарын басқаға өзгертуге болмайды. Индекс тіркестегі символдардың мәнін тексеру үшін ғана қолданылады.

Тіркес ұзындығы Length қасиеті арқылы табылады:

Console.WriteLine("L=" + str.Length); // L=4 болады

Екі тіркесті немесе символдарды теңдікке тексеру үшін == операторы қолданылады. Көбінесе, егер == операторы объектіге сілтеме ретінде қолданылса, онда ол сілтеме­лердің бір объектіге жасалып тұрғандығын тексереді.

6. Тіркестермен операциялар орындау

1. Тіркестерді біріктіру (конкатенация) + таңбасы арқылы немесе concat әдісі, яғни функциясы көмегімен орындалады.

string s1 = "hello"; string s2 = "world";

string s3 = s1 + " " + s2; // нәтижесі: "hello world"

string s4 = String.Concat(s3, "!!!");

// нәтижесі: "hello world!!!"

Console.WriteLine(s4);

Join әдісі де тіркестерді біріктіреді:

string s5 = "apple"; string s6 = "a day"; string s7 = "keeps"; string s8 = "a doctor"; string s9 = "away";

string[] values = new string[] { s5, s6, s7, s8, s9 };

string s10 = String.Join(" ", values);

// нәтижесі: строка "apple a day keeps a doctor away

using System;

namespace StringConcatJoin1

{ class Program

{ static void Main(string[] args)

{ string s1 = "hello"; string s2 = "world";

string s3 = s1 + " " + s2; // нәтижесі: "hello world"

Console.WriteLine(s3);

string s4 = String.Concat(s3, "!!!"); // нәтижесі: "hello world!!!"

Console.WriteLine(s4);

// Join әдісі де тіркестерді біріктіреді:

string s5 = "apple"; string s6 = "a day";

string s7 = "keeps"; string s8 = "a doctor";

string s9 = "away";

string[] values = new string[] { s5, s6, s7, s8, s9 };

string s10 = String.Join(" ", values);

Console.WriteLine(s10); // нәтижесі: "apple a day keeps a doctor away"

Console.ReadKey();

}

}

}

2. Тіркетерді салыстыру үшін статикалық Compare әдісі қолданылады. Мысал келтірейік:

string s1 = "hello"; string s2 = "world";

int result = String.Compare(s1, s2);

if (result<0)

Console.WriteLine("Строка s1 перед строкой s2");

else if (result > 0)

   Console.WriteLine("Строка s1 после строки s2");

else

   Console.WriteLine("Строки s1 и s2 идентичны");

// нәтижесі: Строка s1 перед строкой s2

мұндағы Compare әдісі екі тіркесті салыстырады да, бір сан қайтарады.

Егер 1-тіркес алфавит бойынша 2-тіркестен жоғары тұрса, онда теріс сан (<0) қайтарылады. Қарсы жағдайда оң сан (>0) қайтарылады. Үшінші жағдай – екі тіркес бірдей болса, онда 0 саны қайтарылады.

Жоғарыдағы мысалда h символы алфавит бойынша w символынан жоғары тұрғандықтан, 1-тіркес жоғары тұрады

string s1 = "hello";

string s2 = "world";

 

int result = String.Compare(s1, s2);

if (result<0)

Console.WriteLine("Строка s1 перед строкой s2");

else if (result > 0)

  Console.WriteLine("Строка s1 после строки s2");

else

  Console.WriteLine("Строки s1 и s2 идентичны");

// результатом будет "Строка s1 перед строкой s2

мұндағы Compare әдісі екі тіркесті салыстырады да, бір сан қайтарады.

Егер 1-тіркес алфавит бойынша 2-тіркестен жоғары тұрса, онда теріс сан (<0) қайтарылады. Қарсы жағдайда оң сан (>0) қайтарылады. Үшінші жағдай – екі тіркес бірдей болса, онда 0 саны қайтарылады.

using System; // программаның толық мәтіні

namespace StringCompare1

{ class Program

{ static void Main(string[] args)

{ string s1 = "hello"; string s2 = "world";

int result = String.Compare(s1, s2);

if (result < 0)

Console.WriteLine("Строка s1 перед строкой s2");

else if (result > 0)

Console.WriteLine("Строка s1 после строки s2");

else

Console.WriteLine("Строки s1 и s2 идентичны");

// нәтижесі: Строка s1 перед строкой s2

Console.ReadKey();

}

}

}

3. IndexOf – тіркестегі ішкі мәндерді іздеу операциясы

string s1 = "hello world";

char ch = 'o';

int indexOfChar = s1.IndexOf(ch); // мәні 4

Console.WriteLine(indexOfChar);

 

string subString = "wor";

int indexOfSubstring = s1.IndexOf(subString); // мәні 6

Console.WriteLine(indexOfSubstring);

Егер мұнда керекті символ не ішкі тіркес табылмаса, бұл операция -1 мәнін қайтарады.

Дәл осындай тәсілмен LastIndexOf әдісі керекті символды немесе ішкі тіркесті бастапқы берілген тіркестің соңынан бастап іздейді де, тұрған орнын анықтайды.

using System; // IndexOf толық программасы

namespace StringIndexOf1

{ class Program

{ static void Main(string[] args)

{ string s1 = "hello world";

char ch = 'o';

int indexOf_o = s1.IndexOf(ch); // мәні 4

Console.WriteLine(indexOf_o);

string subString = "wor";

int indexOf_wor = s1.IndexOf(subString); // мәні 6

Console.WriteLine(indexOf_wor);

Console.ReadKey();

}

}

}

using System; // LastIndexOf толық программасы

namespace StringIndexOf1

{ class Program

{ static void Main(string[] args)

{ string s1 = "hello world, hello!";

char ch = 'e';

int LastIndexO = s1.LastIndexOf(ch); // мәні 14

Console.WriteLine(LastIndexO);

string subString = "hel";

int LastIndexHel = s1.LastIndexOf(subString); // мәні 13

Console.WriteLine(LastIndexHel);

Console.ReadKey();

}

}

}

4. Replace әдісі 1-параметр ретінде берілген символды (ішкі тіркесті) тауып алып, оны 2-параметр ретінде беріл- ген символға (ішкі тіркеске) ауыстырады.

string a = "Sarsenbai ";

string b = a.Replace('a', 'o');

Console.WriteLine(b); // нәтижесі : Sorsenboi

string str = "Salem";

str = str.Replace ("Salem", "Hello");

Console.WriteLine(str); // нәтижесі : Hello

string text = "jaqsy bala";

text = text.Replace("jaqsy", "jaman");

Console.WriteLine(text); // нәтижесі : jaman bala

using System; // Replace операциясына мысалдар

class Program

{ static void Main(string[] args)

{ string a = "Sarsenbai ";

string b = a.Replace('a', 'o');

Console.WriteLine(b); // нәтижесі : Sorsenboi

string str = "Salem";

str = str.Replace("Salem", "Hello");

Console.WriteLine(str); // нәтижесі : Hello

string text = "jaqsy bala";

text = text.Replace("jaqsy", "jaman");

Console.WriteLine(text); // нәтижесі : jaman bala

Console.ReadKey();

}

}

5. Регистрді ауыстыру - тіркесті жоғарғы немесе төменгі регистрге ауыстыру үшін ToUpper() және ToLower әдістері қолданылады.

string hello = "Hello world!";

Console.WriteLine(hello.ToLower()); // hello world!

Console.WriteLine(hello.ToUpper()); // HELLO WORLD

Бір тіркесті екінші тіркес ішіне кірістіру үшін Insert() әдісі қолданылады.

string text = "Jaksy bala";

string subString = "aqyldy"; 

text = text.Insert(6, subString);

Console.WriteLine(text); // Jaksy aqyldy bala

Тіркес бөлігін өшіру үшін Remove() әдісі қолданылады.

Тіркес бөлігін қиып алу үшін Substring әдісі қажет, т.с.с.

7. Тіркестерге есеп шығару мысалдары

1. Тіркестегі сөздер санын табу

using System;

class Program {

static void Main()

{ Console.Write(" Tirkes engiz: ");

string s1 = Console.ReadLine(); // түрлендіру керек емес

int i, word = 0; // word - сөздер саны

for (i = 0; i < (s1.Length); i++)

if (s1[i] == ' ') // босорындар санын табу

word++; // word = word + 1;

Console.WriteLine("Sozder sany: " + (word+1));

Console.ReadLine();

}

} Нәтижесі:

2. Тіркесті кері бағытта (реверс) жазып шығу керек.

using System;

namespace StringRevers {

class Program {

static void Main() {

Console.WriteLine("Tirkes engiz: ");

string s1 = Console.ReadLine();

char [] s2 = s1.ToCharArray();

Array.Reverse(s2);

s1 = new string(s2);

Console.WriteLine(s2);

Console.ReadLine();

}

}

}

3. Енгізілген тіркестің палиндром екенін анықтау керек.

using System;

class Program

{ static void Main()

{ string s, b;

Console.Write("Tirkes engiz: ");

s = Console.ReadLine();

int i, j = 0;

int L = s.Length;

for (i = 0; i < L / 2; i++)

{ if (s[i] == s[L - 1 - i]) j++;

else j--;

}

if (j == L / 2)

Console.WriteLine("Engizilgen tirkes - palindrom");

else Console.WriteLine("Engizilgen tirkes - palindrom emes");

Console.ReadKey();

}

}

8. Тіркестерді салыстыру

string типіндегі кластарды өңдейтін бірсыпыра әдістер бар. Кейбір әдістер StringComparison типіндегі параметрлерді қабылдайды.

Бұларда символдық тіркестерді салыстыру реттілігін анықтайтын саналатын тип қолданылады.

Символдық тіркестерді салыстырудың бірнеше тәсілдері бар.

Олар символдардың екілік мәндері арқылы салыстырылса, реттік салыстыру болады.

Ал егер алфавит бойынша салыстырылса, онда оны мәдени ортаны есепке алу арқылы салыстыру дейді.

Бұған қоса, тіркестерді регистрді есепке ала отырып немесе есепке алмай салыстыруға да болады.

Тіркестерді салыстыруды жүзеге асыратын көптеген әдістер – Compare(), Equals(), IndexOf(), Last-IndexOf() бар, оларды тікелей көрсетіп отыру қажет.

Мәдени орта арқылы салыстыратын (тіл және аймақ стандарттары бойынша) StringComparison.Cur-rentCulture тәсілдері бар.

Символдардың сандық мәндері арқылы салыс-тыруда – StringComparison.Ordinal, ал регистрді есепке алмасақ – StringComparison.CurrentCulturelgnoreCase немесе StringComparison.OrdinalI­gnoreCase бар.

Оған қоса, тіркестерді мәдени ортаны есепке алмай салыстыратын тәсілдер де бар.

Compare() әдісі static модификаторы арқылы шақырылады, бұл әдіс экземпляр аты емес, тек өз класының аты бойынша орындалады.

9. System.String класындағы тіркестерде жиі қолданылатын әдістер

Әдіс

Сипаттау

static int Compare(string strA, string strB, StringComparison comparisonType)

bool Equals(string value, StringComparison comparisonType)

int IndexOf(char value)

int IndexOf(string value, StringComparison comparisonType)

Егер strA болса, теріс мән қайтарады; strA>strB болса, оң мән қайтарады; ал strA=strB болса, 0 мәнін қайтарады. Салыстыру тәсілі comparisonType аргумен-тімен анықталады.

Егер шақыратын тіркес пен value аргументінің мәндері бірдей болса, логикалық true мәнін қайтарады. Салыс-тыру тәсілі comparisonType аргументімен анықталады.

Шақыратын тіркес ішінен value аргументімен анықтал-ған символдың алғашқы кездесуін іздеп табады. Іздеуді реттелген тәртіппен жүргізеді. Ізделген символ табыл-са, соның индексін, табылмаса -1 мәнін қайтарады.

Шақыратын тіркес ішінен value аргументімен анықтал-ған ішкі тіркестің алғашқы кездесуін іздеп табады. Із-делген ішкі тіркес табылса, соның алғашқы символы-ның индексін, табылмаса -1 мәнін қайтарады. Салыс-тыру тәсілі comparisonType аргументімен анықталады.

Тіркестерді пайдалану кезінде жиі қолданылатын әдістер

Әдіс

Сипаттау

int LastlndexOf(string value, StringComparison comparisonType)

Шақыратын тіркес ішінен value аргументімен анық-талған ішкі тіркестің соңғы кездесуін іздеп табады. Ізделген ішкі тіркес табылса, соның алғашқы символы-ның индексін, табылмаса -1 мәнін қайтарады. Салыс-тыру тәсілін comparisonType аргументі анықтайды.

string ToLower(Culturelnfo. CurrentCulture culture)

Шақыратын тіркестің төменгі регистрдегі нұсқасын қайтарады. Түрлендіру тәсілі culture аргументімен анықталады.

string ToUpper(Culturelnfo. CurrentCulture culture)

Шақыратын тіркестің жоғарғы регистрдегі нұсқасын қайтарады. Түрлендіру тәсілі culture аргументімен анықталады.

Compare() әдісін шақыру формасы:

нәтиже = string.Compare( str1, str2, тәсіл);

мұндағы тәсіл символдық тіркесті салыстыруды нақты көрсетуді білдіреді.

ToUpper (), ToLower() әдістері тіркесті сәйкесін-ше жоғарғы және төменгі регистр символдарына түрлендіреді.

Бұлардың төменде көрсетілген формаларының CultureInfо параметрі бар, онда мәдени орта атри-буттары сипатталады.

Мұндағы мысалдарда мәдени орта параметрлері (ағымдағы тіл және аймақ стандарттары), мысалы, Culturelnfо.CurrentCulture аргументі оны әдіске берер кезде тікелей көрсетіледі.

Culturelnfо класы System.Globalization атаулар кеңістігіне жатады.

string типіндегі объектілер үшін бұл басқаша болады. == операторы екі тіркеске сілтеме ретінде қолданылса, ол сол екеуін салыстырады. Бұл тұжы-рым != операторына да қатысты болады. Екеуінде де реттік салыстыру орындалады.

Екі тіркестің теңдігін, мәдени ортаны есепке ала отырып, тексеру үшін Equals() әдісі қолданылады, онда салыстыруды StringComparison.CurrentCul-ture аргументі ретінде көрсетеді.

Compare() әдісі тіркестердің реттілігін де анық-тап, сұрыптау үшін де қолданылады.

Егер символдық тіркестерді тек салыстыру керек болса, онда бұл үшін Equals() әдісін қол-данған ыңғайлы болады.

Келесі тіркестерді өңдеуде бірнеше операциялар қолданылған.

// Тіркестермен бірнеше операциялар орындау.

using System;

using System.Globalization;

class StrOps {

static void Main() {

string str1 = ".NET ortasynda С#-ta programmalau.";

string str2 = ".NET ortasynda С#-ta programmalau.";

string str3 = "C#-ta tirkester tez ongdeledi.";

string strUp, strLow;

int result, idx;

Console.WriteLine("str1: " + str1);

Console.WriteLine("str1 tirkesi uzyndygy: " + str1.Length);

// str1 тіркесін бас және кіші әріптермен жазу.

strLow = str1.ToLower(CultureInfo.CurrentCulture) ;

strUp = str1.ToUpper (CultureInfo.CurrentCulture);

Console.WriteLine("str1 tirkesining " +

"kishi ariptermen alyngan nuskasy:\n " + strLow);

Console.WriteLine("str1 tirkesining " +

"bas ariptermen alyngan nuskasy:\n " + strUp);

Console.WriteLine();

// str1 тіркесін символдар бойынша шығару.

Console.WriteLine("str1 tirkesin symboldar boynsha shygaru.") ;

for (int i=0; i< str1.Length; i++)

Console.Write(str1[i]);

Console.WriteLine("\n");

// Тіркестерді реттелген тәртіппен салыстыру.

if (str1 == str2)

Console.WriteLine("str1 == str2");

else Console.WriteLine("str1 != str2");

if (str1 == str3)

Console.WriteLine("str1 == str3");

else Console.WriteLine("str1 != str3");

// Тіркестерді мәдени орта арқылы алыстыру.

result = string.Compare(str3,str1, StringComparison.CurrentCulture) ;

if(result == 0)

Console.WriteLine("str1 jane str3 teng");

else if (result < 0)

Console.WriteLine("str1 tirkesi str3-ten kishi");

else Console.WriteLine("str1 tirkesi str3-ten ulken");

Console.WriteLine();

// str2 айнымалысына жаңа тіркес меншіктеу.

str2 = "Bir Eki Ush Bir";

// Ішкі тіркесті іздеу.

idx = str2.IndexOf("Bir", StringComparison.Ordinal);

Console.WriteLine(" ishki tirkesining algashqy indexi: " +idx);

idx = str2.LastIndexOf("Bir", StringComparison.Ordinal);

Console.WriteLine(" ishki tirkesining songy indexi: " + idx);

}

}

Ескерту:

string түйінді сөзі .NET Framework ортасының кластары кітапханасында анықталған System.String класының қосымша аты болып табылады, яғни ол осы класпен тікелей сәйкестік орнатады.

Сондықтан, string типінде анықталған өрістер мен әдістер тікелей System.String класына жатады.

10.Тіркестер жиымдары

Басқа типтегі мәліметтер тәрізді тіркестер де жиымдар құрамына кіре алады. Мысалы:

// Тіркестер жиымын көрсету.

using System;

class StringArrays {

static void Main() {

string[] str = {

"Bul", "ote", "qarapaym", "test." };

Console.WriteLine("Berilgen jyim: ");

for (int i=0; i< str.Length; i++)

Console.Write(str[i] + " ");

Console.WriteLine("\n");

// Тіркесті өзгерту.

str[1] = "azdap ozgertilgen";

str[3] = "basqasha qurylgan test!";

Console.WriteLine("Ozgertilgen jyim: ");

for (int i=0; i < str.Length; i++)

Console.Write(str[i] + " ");

Console.WriteLine();

}

} Нәтижесі:

Келесі программада бүтін сандар цифрларын сөзбен жазамыз. Мысалы, 19 санын "bir togyz" деген сөздермен бейнелейміз.

// Бүтін сандар цифрларын сөзбен жазу.

using System;

class ConvertDigitsToWords {

static void Main() {

int num, nextdigit, numdigits;

int[] n = new int[20];

string[] digits = { "nol", "bir", "eki", "ush", "tort", "bes", "alty", "jeti", "segiz", "togyz" };

num =1908;

Console.WriteLine("San: " + num);

Console.Write("Sandy sozben jazu: ");

nextdigit = 0; numdigits = 0;

// Жеке цифрларды n жиымында сақтау,

// бұл цифрлар кері бағытта сақталады.

do {

nextdigit = num % 10;

n[numdigits] = nextdigit;

numdigits++; num = num /10;

} while(num> 0);

numdigits--;

// Цифрларға сәйкес сөздерді шығару.

for( ; numdigits>= 0; numdigits--)

Console.Write(digits[n[numdigits]] + " ");

Console.WriteLine() ;

}

} Программа нәтижесі:

Мұнда digits тіркестер жиымында 0..9 арасындағы цифрлардың сөзбен жазылуы сақталған. Программаның орындалуы барысында цифрлар сөздерге түрленеді.

Ол үшін санның жеке цифрлары алынып, олар кері бағытта int типіндегі n жиымында сақталады.

Сонан кейін n жиымын кері бағытта қарастырамыз. Мұнда n жиымының әрбір бүтін мәні санның цифрларына сәйкес сөздерді көрсететін индекс рөлін атқарады да тіркес ретінде шығарылады.

11.Тіркестер тұрақтылығы

Бір айтатын жайт: string типіндегі объектілерді өзгертуге болмайды. Бұл шектеу символдық тіркестерді тиімді түрде пайдалану мүмкіндігін береді.

Сондықтан бұл мүмкіндік кей кезде артықшылыққа да айналып кетеді.

Мысалы, егер бұрынғы тіркестен жаңа тіркес шығару керек болса, өзгер-тілген жаңа тіркес құрамыз, ал бұрынғы тіркес автоматты түрде өшіріліп кетеді де, жұмысқа ешқандай кедергі келтір-мейді.

Бірақ тіркестерге сілтейтін айнымалылар-ды (яғни string типіндегі объектілер) өзгертуге болады, сол себепті олар басқа объектіге сілте-ме жасай алады. Дегенмен, string типіндегі объектінің мазмұны ол құрылғаннан кейін өзгер-тілмейді.

Өзгертілмейтін тіркестердің кедергі бол-майтынын түсінікті түрде көрсету үшін тіркесті пайдаланатын Substring() әдісін қолданатын мысал келтірейік.

Бұл әдіс берілген тіркестің ішкі шағын бөлігін қайтарады, Осының нәтижесінде жаңа тіркестік объект құрылады, ал бастапқы беріл-ген тіркес өзгертілмей, тіркес тұрақтылығы сақталады.

Ішкі тіркес алатын Substring() әдісінің жазылуы:

string Substring(int бастапқы_индекс, int ұзындығы)

мұндағы бастапқы_индекс берілген тіркестегі бастапқы индекс нөмірі, ал ұзындығы – таңдалып алынған ішкі тіркес ұзындығы (ені). Мысал қарастырайық.

// Substring() әдісін қолдану.

using System;

class SubStr

{ static void Main()

{ string orgstr = "C# tilinde tirkester jengil ongdeledi.";

// 11 орыннан бастап, 16 символды бөліп алу

string substr = orgstr.Substring(11,16); // 11-27-орынды алу

Console.WriteLine("orgstr: " + orgstr);

Console.WriteLine("substr: " + substr);

}

}

orgstr айнымалысындағы бастапқы тіркес өзгерген жоқ, ал одан бөлініп алынған ішкі тіркес substr айнымалысында сақталып тұр.

Тіркестер тұрақтылығы С#-та программалаудың кемшілігі емес. Ал тіркестерді өзгерту керек болса, StringBuilder класын қолдану керек, ол System.Text атаулар кеңістігінде анықталған. Бұл класс өзгертуге болатын тіркестік объектілер құра алады.

Бірақ көбінесе С#-та программалауда StringBuilder класы емес, string типі жиі қолданылады.

12. switch операторында

тіркестерді қолдану

string типіндегі объектілер switch операторын басқару үшін қолданыла алады. Бұл – switch операторында қолдануға болатын жалғыз сандық емес тип.

Тіркестерді осы тәсілде пайдалану кей кездерде тиімді болып табылады.

Мысалы, келесі программада "bir", "eki", "ush" сөздеріне сәйкес жеке цифрлар таңбалары шығарылады.

// switch операторын тіркес арқылы басқару.

using System;

class StringSwitch

{

static void Main() {

string[] strs = {"bir", "eki", "ush", "eki", "bir"};

foreach(string s in strs) {

switch (s) {

case "bir": Console.Write (1 + " "); break;

case "eki": Console.Write (2 + " "); break;

case "ush": Console.Write (3 + " "); break;

}

}

Console.WriteLine();

}

}

СОҢЫ


написать администратору сайта