Előadások a c #
Először is, válaszoljunk a kérdésre, hogy a C # karakterek sorozata adja a C stringet nulla végére? A válasz nem, nem. A tömb char [] egy rendszeres tömb. Ezenkívül nem lehet inicializálni karakterláncokkal, ahogy azt a C ++ megengedi. A karakterlánc karakterláncának meghatározása a String osztályhoz tartozik, és a C # nem határozza meg a kölcsönös konverziókat a String és a Char [] osztályok között, még akkor sem explicit módon. A String osztály azonban dinamikus ToCharArray módszer, amely egy hasonló konverziót határoz meg. Lehetőség van arra is, hogy a karakterlánc karakter változó karakterét karakterenként írjuk le egy sor tömbre. Példát fogok adni:
public void TestCharArAndString ()
// char [] strM1 = "Hello, Világ!";
// hiba: az osztály karakterláncának átalakítása az osztály char []
string hello = "Hello, Peace!";
char [] strM1 = hello.ToCharArray ();
char [] Világ = új karakter [3];
Példánkban a strM1 része átmásolódik a világra. A folyamat során a módszer a Tesztelési osztály PrintCharAr eljárását hívja meg, amely karakterkészletet nyomtat stringként. Itt van a szövege:
void PrintCharAr (karakterláncnév, char [] ar)
az (int i = 0; i A ToCharArray módszer lehetővé teszi, hogy egy karakterláncot karakterláncba alakítson át. Sajnos a fordított műveletet nem definiáljuk, mert a ToString metódus, amely természetesen a Char [] osztály összes objektuma, kinyomtatja az osztályra vonatkozó információkat, nem pedig a tömb tartalmát. A helyzetet könnyű rögzíteni megfelelő eljárással. Itt található az eljárás CharArrayToString szövege, amit a teszt példánkban megnevezünk: string CharArrayToString (char [] ar) az (int i = 0; i Osztály Char [], valamint bármely tömb osztály C #, az örökös nem csak a Object osztályban, hanem osztály Array, és ezért az összes szülő osztály módszer, részletesen tárgyalt az előző fejezetben. Van-e olyan speciális módszer, amely lehetővé teszi a műveletek végrehajtását vonalakon, int IndexOfStr (char [] s1, char [] s2) / / visszaadja a s2 alszöveg első előfordulásának indexét int i = 0, j = 0, n = s1.Hossz-s2.Length; bool = hamis; miközben ((i<=n) && !found) Console.WriteLine ("A szem első előfordulásának indexe Ebben az eljárásban az Array osztály standard módszereit először egy karakter előfordulási indexének meghatározására használják egy stringben, majd a létrehozott módszert IndexOfStr az aljzat első előfordulási indexének meghatározásához. A módszer helyességét különböző sorokban ellenőrizzük. Itt vannak munkájának eredménye. Ábra. 13.3. Alakzat egy karaktersorozat előfordulási indexei Van egy char típusú C # A C # -ben a mutatók engedélyezettek a nem biztonságos jelölésű blokkokban. Elméletileg ilyen blokkokban lehetséges egy Char * típusú változót deklarálni, de még mindig nem lesz lehetséges a sorok másolására szolgáló eljárás rövid leírása, mint a C ++ esetében. Helyes megfontolni, hogy a C # sorban a char * típus használata nem ajánlott. 14. Előadás: C # hangszerek. String és StringBuilder osztályok Az előző előadásban egy karaktertípusú karaktert és hosszúságú karakterláncokat beszéltünk, amelyeket egy sor tömb adott. A karakterláncokkal való munkavégzés fő típusa a string típusú, amely a változó hosszúságú karakterláncokat határozza meg. A C # karakterlánc a referenciatípusokra utal. A sorok fölött - az ebbe az osztályba tartozó objektumokhoz - meghatározzák a műveletek széles körét, amelyek megfelelnek a koncepció kialakításának modern fogalmának. • egy karakter előre meghatározott számú alkalommal megismétlődik; • karakterek tömbje char []; • a tömb tömb része. public void TestDeclStrings () string world = "Világ"; // string s1 = új karakterlánc ("s1"); // string s2 = új karakterlánc (); string sssss = új karakterlánc ('s', 5); char [] yes = "Igen" .ToCharArray (); string stryes = új string (igen); string strye = új karakterlánc (igen, 0,2); Console.WriteLine ("world =; sssss =; stryes =;" + "strye =", világ, sssss, stryes, strye); A világobjektum kifejezetten a konstruktornak hívott, és a sssss, stryes, strye objektumokat a String osztály különböző konstruktorai hozták létre. String műveletek Az alábbi műveletek a sorokban vannak meghatározva: • két egyenértékellenőrzési művelet (= =) és (! =); • string összefűzés vagy összefűzés (+); Más referenciatípusoktól eltérően az egyenértékűséget igazoló műveletek összehasonlítják a string értékeket, nem pedig a hivatkozásokat. Ezeket a műveleteket mind jelentős típusokon végzik. A bináris művelet "+" két sorban összeköti, a második sort az első farkához rendelve. Az a képesség, hogy indexet készítsen a stringek használatakor, tükrözi azt a kellemes tényt, hogy egy karaktersorozatot tömbként lehet kezelni, és minden szimbólumával könnyen meg lehet kapni. A karakterlánc minden karaktere char, amely csak olvasható, de nem írásra. Íme egy példa, amelyben a fenti műveleteket a sorokon végezzük: nyilvános érvénytelen TestOpers () // műveletek vonalon string s1 = "ABC", s2 = "CDE"; string s3 = s1 + s2; char ch1 = s1 [0], ch2 = s2 [0]; Console.WriteLine ("s1 =, s2 =, b1 =," + "ch1 =, ch2 =", s1, s2, b1, ch1, ch2); Console.WriteLine ("s1 =, s2 =, b1 =," + "ch1 =, ch2 =", s1, s2, b1, ch1, ch2); Állandók nélkül nem lehet. A C #-ban kétféle karakterlánc áll rendelkezésre: • Normál konstansok, amelyek idézőjelben szereplő karakterláncot képviselnek; • @ -konstansok a szokásos állandóval az előző jellel @. Rendes állandókban bizonyos karaktereket speciális módon értelmeznek. Ez elsősorban annak köszönhető, hogy meg kell adni a nem nyomtatott karaktereket egy karakterláncban, például egy táblázatos karaktert. Szükség van arra, hogy kódjaikat kóddal adják meg - escape szekvenciák formájában. Mindezen célokra a karakterekből álló "" karakter kombinációját használjuk - a fordított perjelet funkciót. Például, egy pár karaktert: „\ n”, „\ t”, „”, „” „határozza meg, illetve a szimbólum az átmenet egy új sor, a tab karaktert, jelképe maga backslash idézőjelet helyezünk a sort, de nem jelez a . a végén a kombináció „\ xNNNN” állítja egy szimbólum által meghatározott hexadecimális kódját NNNN Bár az ilyen felmerülő kérdések egészen természetes, néha hátrányai :. például beállításakor állandók, amelyek meghatározzák a fájl elérési útvonalát, szükség van minden egyes alkalommal, hogy megduplázza a backslash karakter az egyik. miért jelent meg a @ -const Ante-t. A @ -konstansokban az összes szimbólumot a képnek megfelelően teljesítik. Ezért a fájl elérési útját @ -konstantnak kell állítani. Az ilyen esetekben az egyetlen probléma az, hogy miként állítsuk be az idézet karaktert úgy, hogy ne tekintsük az állandó konstansnak. Az a megoldás, hogy megkétszerezzük a szimbólumot. Itt vannak a megfelelő példák: // Kétféle konstans Console.WriteLine ("s1 =, s2 =, b1 =", s1, s2, b1); Console.WriteLine ("s1 =, s2 =, b1 =", s1, s2, b1); Console.WriteLine ("s1 =, s2 =, b1 =", s1, s2, b1); Nézze meg a kódrészletek eredményeit, amikor a TestDeclStrings és a TestOpers eljárásokat hívja. Változatlan osztálylánc A C #-ben létezik egy változó osztály fogalma. Egy ilyen osztály esetében nem módosíthatja az objektum értékét a módszerek hívásakor. A dinamikus módszerek új objektumot hozhatnak létre, de nem módosíthatják a meglévő objektum értékét. s1 = "Zenon"; ch1 = s1 [0]; A String osztály statikai tulajdonságai és módszerei 14.1. Táblázat. A String-osztály statikus módszerei és tulajdonságai s = string.Format (ci, "Összesen:", 77,77); Ábra. 14.2. A formázási módszer eredményei Csatlakozás és megosztás módszerei A Csatlakozás és a Split módok kölcsönösen fordított transzformációkat hajtanak végre a szövegsoron. A Dinamikus metódus módszer lehetővé teszi az elemek szövegének elemzését. A statikus Csatlakozási mód fordított műveletet hajt végre, és elemek sorát gyűjtik össze. A karakterlánc által megadott szöveg gyakran strukturált elemek - bekezdések, mondatok, szavak, zárójelek stb. Ha ezt a szöveget használja, akkor speciális elemek határolóelemekkel kell elemekre osztania - ezek lehet szóközök, zárójelek, írásjelek. Gyakran hasonló problémák merülnek fel, amikor strukturált szövegekkel dolgoznak. A Split és a Csatlakozás módszerei egyszerűen megoldják ezeket a problémákat. A dinamikus módszernek a megosztása, mint rendesen, túlterhelt. A leggyakrabban használt implementáció a következő szintaxissal rendelkezik: nyilvános karakterlánc [] Split (params char []) A Split metódus bemenete egy vagy több karaktert tartalmaz, amelyeket határolónak értelmeznek. A metódusnak nevezett karakterlánc objektum olyan aljzatokra oszlik, amelyeket ezek a határolók határolnak. Ebből a szubsztrátból egy tömb jön létre, amelyet a módszer eredményként adja vissza. Egy másik megvalósítás lehetővé teszi, hogy korlátozza az elemek számát a visszatért tömbben. A statikus Csatlakozási módszer szintaxisa: nyilvános statikus string Csatlakozás (karakterlánc-határolók, karakterláncok [] elemek) Ennek eredményeképpen a módszer egy olyan karakterláncot ad vissza, amelyet a tételek tömb elemeinek összekapcsolásával nyerünk, amelyek között a határoló határoló karakterlánc beillesztése történik. Általánosságban a határoló vonal egy karakterből áll, amely az elemek elemeinek elemeit osztja az eredményben lévő sorban; de bizonyos esetekben a határoló lehet több karaktersorozat is. Vizsgáljuk meg a módszerek alkalmazásának példáit. Az elsőben a vonal összetett mondatot jelent, amely egyszerű mondatokra tagolódik. A második mondatban szavakra van osztva. Ezután az átmásolt szöveg fordított összeszerelése megtörténik. Itt található a megfelelő eljárás kódja: public void TestSplitAndJoin () string txt = "És ez a búza, amely egy sötét szekrényben van tárolt, "+" a házban, amelyet Jack épített! "; Console.WriteLine ("Szöveg szétválasztása egyszerű mondatokba:"); string [] SimpleSentences, szavak; // a SimpleSentences és Words tömbök dimenziója // automatikusan beállítva a // a megosztott metódus által visszaadott tömb méreteKapcsolódó cikkek