1s 8 karakterlánc-műveletekként. Új funkciók a karakterláncokkal való munkához

1. RÉSZ. MÓDSZEREK (26).

1.1. Alapvető módszerek (10). Független, saját egyszerű algoritmusaikra épül.

Page_Add() (jobb-bal összeadás meghatározott karakterekkel).

Page_Inverse () (inverzió - karakterek jobbról balra).

Page_Codes() (karakterkódok a ""-ig és egy tömb kódokkal)

Page_Characters() (kódokból álló karakterlánc, amelyet „” jellel választanak el, vagy kódokat tartalmazó tömbből)

Page_ReplaceSymbols() (egyes karakterek cseréje másokkal).

String_FromArray() (sztring egy elválasztóval elválasztott töredéktömbből)

Page_FindIn() (alkarakterlánc keresése (beleértve a jobb oldalt is) meghatározott előfordulási számmal).

Page_FindGr() (A megadott karakterkészletben szereplő karaktercsoport keresése)

Page_FindNumber() (Szám keresése, beleértve a jobb oldalt is a megadott előfordulási számmal)

Page_Interpret() (tömbbe, a megállapított szintaxis szerint)

1.2. Származtatott módszerek (12). Valójában ez négy általánosított algoritmus-módszer használata (lásd a 2. részt)

Page_Number() (a sor elejétől és végétől, ne „ijedj meg” a nem numerikus karakterektől.

Page_Find() (alkarakterlánc keresése (beleértve a kis- és nagybetűk közötti különbségeket és a jobb oldalt is) meghatározott előfordulási számmal).

Page_Replace() (keressen (beleértve a kis- és nagybetűket és a jobbkezeseket is), és cserélje ki a határoló karakterláncokat).

String_Piece() (egy karakterláncdarab a határoló megadott előfordulásai között (balra vagy jobbra)).

Page_ReplacePiece() (a „csonkot” lecseréli a forráskarakterláncban a megadott karakterláncra).

Page_ВArray() (az elválasztó megadott előfordulásai között (beleértve a jobb oldaliakat és kis- és nagybetűk nélkül).

Page_TransferBySyllables() ("Aligha" részkarakterláncokra bontva, kötőjellel).

Page_MoveByWords() ("Softly" részkarakterláncokra bontva)

Page_Cut() („Vágás” meghatározott hosszúságú részkarakterláncokra)

Str_Shorten() (a "rövidített" karakterek bal csoportját cserélje ki egy "cserekarakterláncra"

Page_Abbreviation() (a „csökkentett” karakterek megfelelő csoportját cserélje ki „cserekarakterláncra”

Str_ShortenS() (a „rövidített” karakterek csoportjának közepét cserélje ki „cserekarakterláncra”

Page_Extend (meghatározott hosszúságúra bővítés a megadott karakterek számának növelésével)

1.3. Részletes módszerek (3). Sor "boncolása" részletes információkat tartalmazó táblázatba történő áthelyezéssel.

Page_vTableIn() (beágyazott határolók rendszere szerinti táblázatba).

Page_vTableGr (többszintű szűrő szerint a táblázathoz).

Page_inTableNumbers (egy táblázatban számokkal és közöttük töredékekkel).

2. RÉSZ. ÁLTALÁNOS MÓDSZEREK – ALGORIMOK (3).

Page_Occurrence() (a „Keresés” és a „Csere” módszer).

Page_Fragments() ("Piece","ReplacePiece,"InArray","inTableIn" metódusok).

Page_Abcr() ("AbcrL", "AbcrP", "AbcrS", "Expand" metódusok.

Page_Split() (a "Move By Sillales", "Move By Swans", "Cut" metódusok.

3. RÉSZ UNIVERZÁLIS FUNKCIÓ.

Ez egyfajta feltételes programozási felület, amely lehetővé teszi

egyszerre több metódust alkalmazzon egy karakterláncra. Megvalósítva mint

hét paraméterrel működik (a "Demo" erre a funkcióra épül):

Oldal_(Módszerek, Almódszerek, Bemenet, Param1, Param2, Length_Number_Position, További kimenet)

Lehetőségek:

- „Módszerek” - több „kombinált” és (vagy) egy „kizárólagos” módszer

(egykarakteres kódok vagy nevek, a "," segítségével lehetséges)

- „Almetódusok” - több „kombinált” és (vagy) „exkluzív” lehetőség

„kizárólagos” módszer (egykarakteres kódok vagy nevek);

- „Bemenet” – Karakterlánc, értéktömb vagy táblázat;

- „Param1” - keresési karakterlánc, helyettesítések, elválasztók, szűrők;

- „Param2” – helyettesítő karakterlánc vagy karakterek;

- "Length_Number_Position" -Szám, számok elválasztón vagy számokkal rendelkező tömbön keresztül;

- „További kimenet” – Szám vagy karakterlánc, tömb vagy értéktáblázat;

Az almódszerek nevei és/vagy egykarakteres kódjai, valamint a számok

(Length_Number_Position) tetszőleges és elválasztható

a következő határoló jelek bármelyike: ”, :;”.

4. RÉSZ. NÉHÁNY PÉLDA.

There areNumbersInLine=(Str_FindNumber(InLine)<>Határozatlan);

Egy sorban számok vannak = (String_FindGr(Inline,"+0123456789")>0);

Van latin = (Str_FindGr(InStr, Str_Interpret("lL"))>0);

Vannak meghatározott jelek = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

IsNotPrinted=(Str_FindGr(InxStr, Line_Interpret("-l-L-r-R-P-Z-C"))>0);

5. RÉSZ. KÖVETKEZTETÉS.

Ahol lehetett, beértem egy áthaladással a vonal mentén. A második menet általában töredékes. Nem használtam a beépített StrNumberOccurrences() függvényt.

A beépített függvények használatosak: Left(), Right(), Middle(), StrLength()

- (a pozicionálásnak és a sor egy részének megszerzésének „gyorsnak” kell lennie).

A programozási nyelvek alapvető képességei általában a számokkal és karakterláncokkal való munkavégzést foglalják magukban. Általában ezek a szolgáltatások a fordítókódba vannak bekódolva (vagy a programozási nyelv „alap” osztályai vannak megvalósítva).

Az 1C-ben magában a platformban van programozva a karakterláncokkal való munka képessége. Ma megvizsgáljuk az 1C karakterláncokkal való munkavégzés jellemzőit a programokban a beépített 1C nyelven.

Vonalérték 1C

1. Kezdjük a legegyszerűbbel. Változó létrehozása és állandó karakterlánc-érték hozzárendelése így néz ki az 1C-ben:

Változó = "Szia, világ!";

Ha egy idézőjel karaktert kell megadnia egy állandó 1C karakterlánc értékben, akkor meg kell dupláznia ""

Változó = "Szia, világ"!;

2. Az 1C sortörés egyszerre kétféleképpen adható meg. Az első a | szimbólum használata

Változó = "Szia!
| világ! ";

A második a Symbols rendszer felsorolását használja. Lehetővé teszi 1C sortörések és egyéb nem nyomtatható karakterek, például TAB hozzáadását.

Változó = "Hello" + Symbols.PS + "béke!";

3. Az 1C konfigurációi nem csak egy nyelvre (orosz, angol vagy másik) fejleszthetők, hanem egyidejűleg több nyelvre is. Ebben az esetben az 1C ablak alján az aktuálisan használt nyelv kerül kiválasztásra.

A nyelvek listája az Általános/Nyelvek ág konfigurációs ablakában található. Minden nyelvnek van egy rövid azonosítója, mint pl ru vagy eng.

Nyilvánvaló, hogy egy ilyen konfiguráció programozásakor az 1C vonalak többnyelvűek is lehetnek. Ehhez létre lehet hozni egy ilyen 1C sort az átmenő megadásával; lehetőségek nyelvi azonosító szerint:

Változó = "ru=""Szia világ! ""; hu=""Szia világ! """;

Ha az így kialakított 1C sort szokás szerint használod, akkor az lesz ami benne van írva. Ahhoz, hogy a rendszer két lehetőségre bontsa, és a kívántat használja, az НStr() függvényt kell használnia:

//kétnyelvű konfigurációk esetén helyes
Jelentés(NStr(Változó));

1C vonaltípusú kellékek

Az attribútum egy mező az 1C könyvtárban/dokumentumban. Az 1C nyelvű programban lévő változóktól abban különbözik, hogy az attribútumhoz pontosan meg van adva a típusa (szám, 1C karakterlánc stb.). Ha fel kell frissítenie az emlékezetét a kellékről, nézze meg a leckét.

Ha megadja az attribútum típusát - 1C sor, akkor ezenkívül meg kell adnia a paramétereket.

Az 1C sorok korlátlan hosszúságúak (hosszúság = 0) és korlátozott hosszúságúak, jelezve a karakterek pontos számát. A korlátlan hosszúságú 1C sorok külön SQL táblában vannak tárolva, így használatuk kevésbé produktív, mint a korlátozottak.

Éppen ezért a korlátlan hosszúságú 1C húrok használatának megvannak a maga korlátai - nem lehet mindenhol használni őket. Például nem megengedett dokumentumszámként, hivatkozási kódként vagy mérésként.

Munka 1C húrokkal

Az 1C platform számos beépített funkcióval rendelkezik a húrokkal való munkavégzéshez.

  • AbbrLP ("Hihetetlen, de igaz!")
    Eltávolítja a felesleges szóközöket az 1C sorból. Bármilyen típus 1C karakterláncsá alakítására is használható (például számok).
  • Változó = "Vasya" + AbbrLP(" plusz") + "Olya"; //lesz "Vasya plus Olya"
    Példa több 1C karakterlánc érték összegzésére. Az eredmény egy sor 1C lesz.
  • Változó = Lev("Zene", 2); //"Mu" lesz
    Változó = Közepes("Zene", 2, 2); //lesz "fenyegetés"
    Változó = Jogok("Zene", 2); //lesz "ka"
    Különféle lehetőségek egy részkarakterlánc 1C karakterláncból való beszerzésére.
  • Változó = Find("Zene", "zy"); //3 lesz
    Keressen egy részkarakterláncot az 1C karakterláncban, az 1. karaktertől kezdve.
  • Változó = StrLength("Zene"); //6 lesz
    Az 1C sorban lévő karakterek számát adja vissza.
  • Report("Hello") //az 1C ablak alján lévő üzenetablakban
    Alert("Hello") //felugró párbeszédpanel
    Status("Hello") //az állapotkijelző sorban a bal alsó sarokban
    .

Tárgyak bevitele az 1C sorba

Mint tudják, a strukturált információk cseréjének legnépszerűbb formátuma jelenleg az XML. Még az MS Office Word és Excel legújabb verziója is ebbe a formátumba menti a fájlokat (docx és xlsx, módosítsa a kiterjesztést zip-re, megnyitja archiválóban).

Az 1C adatcserére szolgáló platform számos lehetőséget kínál, amelyek közül a fő szintén az XML.

1. A legegyszerűbb módszer az Abreviation() vagy String() függvény használata. Használhatja a REPRESENTATION() függvényt a kérés törzsében. Műveletük eredménye ugyanaz - bármilyen 1C objektum karakterlánc reprezentációját generálják a felhasználó számára.

Egy könyvtár esetében alapértelmezés szerint ez lesz a neve. Dokumentum esetén – a dokumentum neve, száma és dátuma.

2. Bármely 1C objektum (korlátozásokkal) konvertálható XML-be és fordítva. Az átalakítási folyamatot szerializálásnak nevezik.

StringViewXml = XMLString(Érték); //XML lekérése 1C értékből
Value1C = XMLVérték(Típus("Könyvtárlink.Nómenklatúra"),TípusStringXml); //az 1C értéket az XML karakterláncból kapja meg, meg kell adnia a fogadni kívánt 1C típust

3. Az 1C platform saját módszere van arra, hogy bármilyen 1C objektumot karaktersorozattá alakítson. Az 1C 7.7-es verzióról költözött. Ezt a formátumot más programok nem értik, de más 1C megérti, ami megkönnyíti az 1C adatbázisok közötti cserét.

Sor = ValueInRowInt(Érték1C); //lekéri az 1C karakterláncot az 1C értékből
ValueVFile("C:\Sajátfájl.txt", Érték1C); //egy másik lehetőség, az 1C értékből kapunk egy fájlt egy mentett karakterlánccal
Érték1C = ValueFromStringInt(String); //vissza az 1C sorból
Érték1C = ÉrtékFájl("C:\Sajátfájl.txt"); //vissza a fájlból

1C sorok szerkesztése az űrlapon

Amellett, hogy 1C nyelvű programban 1C karakterláncokkal dolgozom, természetesen szeretném, ha a felhasználó szerkeszthetné azokat. Erre több lehetőség is kínálkozik:

1. A legegyszerűbb módja egy 1C vonal beléptetésének kérése. Ezt a módszert az 1C programozás tanításakor használják; az életben sokkal ritkábban használják (de használják!).

Változó = "";
Row = EnterValue(Változó, "Írja be a teljes nevet");

2. Egy 1C objektum (könyvtár/dokumentum) vagy űrlap részleteinek (lásd) megjelenítéséhez leggyakrabban egy beviteli mezőt használnak. Ez a leggyakoribb eszköz az 1C-ben a felhasználó számára a szerkesztőmezők kezeléséhez.

3. A beviteli mező lehetőségei bővíthetők (lásd a beviteli mező tulajdonságait, kattintson rá jobb gombbal, további részletek):

  • Jelölőnégyzet Többsoros szerkesztési mód
  • Speciális szerkesztés jelölőnégyzet (akkor érhető el, ha az előző jelölőnégyzet be van jelölve)
  • Jelszó mód jelölőnégyzet (lásd).

4. Ha a beviteli mező összes képessége nem elég Önnek, van beépített szerkesztő. Az űrlaphoz való hozzáadásához hozzá kell adni egy Szöveges dokumentum mezőt az Űrlap/Beszúrás vezérlője menühöz. Tulajdonságaiban megadhatja annak működési módját – az Extension tulajdonságot.

Szöveges dokumentummező nem társítható közvetlenül adatokhoz. Az űrlap OnOpen() eseménykezelőjébe függvényt kell írni (lásd:

Űrlapelemek.ElemNévSzövegDokumentumField.SetText(StringValue); //itt a ValueString az a szöveg, amelyet például az attribútumból kapunk

És a mentéskezelőben - például a Mentés gombban - adjon hozzá egy mentést:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ÉrtékAz itt található sor az az attribútum, ahová az értéket mentjük

5. Az 1C 8.2.11-es verziójában a felügyelt űrlapokon egy új lehetőség jelent meg az 1C vonal megjelenítésére - a Formátumozott dokumentum mező.


Hasonlóan a szöveges dokumentum mezőjéhez, ezt megnyitáskor be kell állítani, és a program segítségével saját kezűleg menteni kell.

  • Abban az 1C objektumban, amelynek formáját hozzuk létre (könyvtár, dokumentum, feldolgozás stb.) - adjon hozzá egy attribútumot Value Storage típussal
  • Az OnReadOnServer() függvényben az attribútumból állítjuk be a szöveget

    //itt az Attribútum az 1C objektum hozzáadott attribútuma
    //itt a FormattedDocument a szerkesztendő űrlap mezőjének neve
    &A szerveren

    FormattedDocument = CurrentObject.Attributes.Get();
    Az eljárás vége

  • A BeforeWritingOnServer() függvényben vagy a gomb segítségével írjuk ki a szöveget a mezőből

    &A szerveren
    Eljárás ReadingOnServer(CurrentObject) során
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Az eljárás vége

A String típus minden programozási nyelvben megtalálható. Primitív, és az 1C-ben sok funkció van a vele való munkához. Ebben a cikkben példákon keresztül részletesen megvizsgáljuk az 1C 8.3 és 8.2 karakterlánctípusokkal való munkavégzés különböző módjait.

Vonal

Annak érdekében, hogy bármilyen típusú változót karaktersorozattá alakítsunk, van egy azonos nevű függvény: „String()”. A bemeneti paraméter maga a változó lesz, aminek a karakterlánc-reprezentációját meg kell szerezni.

String(False) // "Nem"-et ad vissza
String(12345) // „12,345”-et ad vissza
Karakterlánc(CurrentDate()) //"07/21/2017 11:55:36"

Nemcsak a primitív típusokat lehet karaktersorozattá konvertálni, hanem másokat is, például könyvtárak és dokumentumok elemeit.

SokrLP, SokrL, SokrP

Ezeknek a függvényeknek a bemeneti paraméterei karakterlánc típusú változók. A függvények eltávolítják a jelentéktelen karaktereket (szóközök, kocsivisszaadások stb.): bal és jobb oldalról, csak balról, illetve csak jobbról.

Rövidítés(" A szóközök mindkét oldalon el lesznek távolítva ") // "A szóközök mindkét oldalon el lesznek távolítva"
Rövidítés(" A szóközök mindkét oldalon el lesznek távolítva ") // " A bal oldali szóközök el lesznek távolítva "
Rövidítés(" A két oldalon lévő szóközök el lesznek távolítva ") // " A jobb oldali szóközök el lesznek távolítva"

Leo, jobb, közepes

Ezek a funkciók lehetővé teszik egy karakterlánc egy részének levágását. A "Left()" függvény a karakterláncnak a megadott hosszúságú bal oldali részét adja vissza. A "Right()" függvény hasonló, de jobbról vág. Az „Avg()” függvény lehetővé teszi annak a karakternek a számát, amelyből a sor ki lesz jelölve, és annak hosszát.

Lev("String változó", 4) // az "Str" értéket adja vissza
Right("String változó", 7) // a "változót" adja vissza
Medium("String változó", 2, 5) // a "troco"-t adja vissza

Erősség

A függvény határozza meg a karakterlánc változóban található karakterek számát.

StrLength("Word") // a végrehajtás eredménye 5 lesz

megtalálja

A függvény lehetővé teszi a karakterlánc egy részének keresését egy karakterlánc változóban. A visszatérési érték egy szám lesz, amely a talált karakterlánc elejének pozícióját mutatja. Ha nem található egyezés, nullát ad vissza.

Felhívjuk figyelmét, hogy a keresés megkülönbözteti a kis- és nagybetűket. Ha a keresési részkarakterlánc egynél több előfordulása van az eredeti karakterláncban, a függvény az első előfordulás elejét adja vissza.

A Find("egy, kettő, egy, kettő, három", "kettő") // függvény a 6-os számot adja vissza

Üres sor

Ennek a függvénynek a használata lehetővé teszi annak meghatározását, hogy egy karakterlánc üres-e. Az olyan kisebb karaktereket, mint a szóköz, a kocsi vissza és mások nem veszik figyelembe.

Az EmptyString("Pupkin Vaszilij Ivanovics") // függvény a False értéket adja vissza
Az EmptyString(" ") // függvény a True értéket adja vissza

VReg, NReg, TReg

Ezek a függvények nagyon hasznosak a karakterlánc-változók összehasonlításakor és konvertálásakor. A "Vreg()" visszaadja az eredeti karakterláncot nagybetűvel, a "HPreg()" kisbetűvel, a "TReg()" pedig úgy formázza vissza, hogy minden egyes szó első karaktere nagybetűs legyen, az összes további karakter pedig nagybetűs legyen.

VReg("GENERAL DIRECTOR") // visszatérési érték - "GENERAL DIRECTOR"
NReg(“CEO DIRECTOR”) // visszatérési érték – “CEO”
TREG („CEO DIRECTOR”) // visszatérési érték – „General Director”

Oldalcsere

Ez a funkció a szövegszerkesztőkben a helyettesítéshez hasonló. Lehetővé teszi, hogy egy karaktert vagy karakterkészletet lecseréljen egy másikra a karakterlánc-változókban.

StrReplace("piros, fehér, sárga", ","", ";") // "piros; fehér; sárga"

StrNumberLines

A függvény lehetővé teszi, hogy meghatározza a kocsivisszaadásokkal elválasztott sorok számát egy szöveges változóban.

Az alábbi példában a ciklus három körön megy keresztül, mert a LineNumberRow függvény a 3-as értéket adja vissza:

Ha ind = 1 a Strings száma szerint ("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") Ciklus
<тело цикла>
EndCycle;

StrGetString

Ez a funkció ugyanúgy működik többsoros szöveggel, mint az előző. Lehetővé teszi, hogy egy szöveges változóból egy adott karakterláncot kapjon.

StrGetString("Karakterlánc1" + Karakterek.PS + "Karakterlánc2" + Karakterek.PS + "Karakterlánc3", 2) // "String2" visszaadása

PageNumberOccurrences

A függvény megszámolja egy karakter vagy részkarakterlánc előfordulásának számát a keresési karakterláncban.

StrNumberAttachments("a;b;c;d; ", ";") // függvény a 4-es számot adja vissza

Szimbólum és szimbólumkód

Ezek a funkciók lehetővé teszik, hogy egy karaktert Unicode kódolású kódja alapján kapjon meg, valamint maga a karakter határozza meg ezt a kódot.

SymbolCode("A") // függvény az 1040 számot adja vissza
CharacterCode(1040) // függvény „A”-t ad vissza

Gyakori feladatok a húrokkal végzett munka során

Karakterláncok összefűzése

Több karakterlánc kombinálásához (összefűzés végrehajtásához) elegendő az összeadás operátort használni.

"Line 1" + "Line 2" // két sor hozzáadásának eredménye "1. sor 2. sor" lesz

Típus Konverzió

Ahhoz, hogy egy típust stringgé alakítsunk, például egy hivatkozást egy könyvtárelemre, egy számot stb., elegendő a „String()” függvény használata. Az olyan függvények, mint az „ScrLP()” szintén karakterláncokká alakítják a változókat, de azonnal levágják a jelentéktelen karaktereket.

String(1000) // „1000”-et ad vissza

Kérjük, vegye figyelembe, hogy egy szám karakterláncsá alakításakor a program automatikusan hozzáad egy szóközt, amely elválasztja az ezret. Ennek elkerülése érdekében a következő konstrukciókat használhatja:

StrReplace(String(1000),Karakterek.NPP,"") // az "1000" értéket adja vissza

String(Format(1000,"HG=")) // "1000"-et ad vissza

Idézetek egy karakterláncban

Gyakran meg kell küzdenie azzal, hogy egy karakterlánc-változóban idézőjeleket kell megadnia. Ez lehet a konfigurátorban írt kérés szövege, vagy csak egy változó. A probléma megoldásához csak két idézőjelre van szükség.

Header = String("Horns and Hooves LLC - mi vagyunk!") // a "Horns and Hooves LLC - mi vagyunk!"

Többsoros, sortörés

Többsoros szöveg létrehozásához csak sortöréseket (Symbols.PS) adjon hozzá.

MultilineText = "Első sor" + Szimbólumok.PS + "Második sor"

Hogyan távolítsuk el a szóközöket

A jobb vagy bal oldali szóközök eltávolításához használhatja a „ScrAP()” funkciót (valamint az „ScrL()” és „ScrP()”):

StringNoSpaces = Rövidítés(" Sok betű ") // a függvény a "Sok betű" értéket adja vissza

Ha egy szám karakterláncsá alakítása után el kell távolítania a nem törő szóközöket, használja a következő konstrukciót:

StringNoSpaces = StrReplace(String(99999),Karakterek.NPP,"") // "99999"-et adja vissza

A programozók gyakran használják a következő konstrukciót is, amely lehetővé teszi a szövegváltozók minden szóközének eltávolítását vagy másik karakterrel való helyettesítését:

StringNoSpaces = StrReplace("hello","") // a "hello"-t adja vissza

A húrok összehasonlítása egymással

A kifejezéseket összehasonlíthatja a szokásos egyenlőségjellel. Az összehasonlítás megkülönbözteti a kis- és nagybetűket.

"Hello" = "hello" // False értéket ad vissza
"Hello" = "Hello" // True értéket ad vissza
"Hello" = "Viszlát" // a False értéket adja vissza

Kevés mechanizmus létezik a karakterláncokkal való munkavégzésre az 1C lekérdezésekben. Először is hozzá lehet adni a sorokat. Másodszor, kivehet egy részkarakterláncot egy karakterláncból. Harmadszor, a karakterláncok összehasonlíthatók, beleértve a mintákat is. Valószínűleg ez minden, amit a húrokkal meg lehet tenni.

Húr kiegészítés

Sorok hozzáadásához a lekérdezéshez a „+” műveletet kell használni. Csak korlátozott hosszúságú karakterláncokat adhat hozzá.

SELECT "Név: " + Partnerek. Név AS 1. oszlop FROM Címtárból. Partnerek AS Partnerek WHERE Partnerek. Link = &Link

Alkarakterlánc funkció

SUBSTRING(<Строка>, <НачальнаяПозиция>, <Длина>)

Az Environment() függvény analógja az objektummodellből. A Substring() függvény karakterláncadatokra alkalmazható, és lehetővé teszi egy töredék kiválasztását <Строки> , kezdve a karakter számával <НачальнаяПозиция> (a sorban lévő karakterek 1-től kezdődően vannak számozva) és hossza <Длина> karakterek. A függvényszámítás eredménye változó hosszúságú karakterlánc típusú, és a hossza korlátlannak számít, ha <Строка> korlátlan hossza és paramétere van <Длина> nem állandó és nem nagyobb, mint 1024.

Ha a karakterlánc hossza kisebb, mint a második paraméterben megadott, akkor a függvény üres karakterláncot ad vissza.

Figyelem! A SUBSTRING() függvény használata a korlátlan hosszúságú karakterláncok korlátozott hosszúságú karakterláncokká alakításához nem ajánlott. Ehelyett jobb az EXPRESS() cast operátort használni.

Funkció hasonló

Ha meg kell győződnünk arról, hogy egy karakterlánc attribútum megfelel bizonyos feltételeknek, összehasonlítjuk:

SELECT Counterparts. Name AS 1. oszlop FROM Címtár. Partnerek AS Partnerfelek WHERE Partnerek Név = "Gazprom"

De mi van, ha finomabb összehasonlításra van szüksége? Nem csak egyenlőség vagy egyenlőtlenség, hanem egy bizonyos mintához való hasonlóság? A HASONLÓ függvény pontosan erre készült.

LIKE – Operátor egy karakterlánc mintához való hasonlóságának ellenőrzésére. A LIKE analógja SQL-ben.

A HASONLÓ operátor lehetővé teszi a tőle balra megadott kifejezés értékének összehasonlítását a jobb oldalon megadott minta karakterlánccal. A kifejezés értékének string típusúnak kell lennie. Ha a kifejezés értéke megegyezik a mintával, akkor az operátor eredménye TRUE, ellenkező esetben HAMIS.

A sablon karakterláncának következő karakterei szolgáltatáskarakterek, és jelentésük eltér a karakterlánc karakterétől:

  • % (százalék): tetszőleges számú karaktert tartalmazó sorozat;
  • _ (aláhúzás): egy tetszőleges karakter;
  • […] (egy vagy több karakter szögletes zárójelben): bármely, a szögletes zárójelben szereplő karakter. A felsorolás tartalmazhat tartományokat, például a-z, ami egy tetszőleges karaktert jelent a tartományban, beleértve a tartomány végeit is;
  • [^...] (szögletes zárójelben egy tagadójel, amelyet egy vagy több karakter követ): bármely egyedi karakter, kivéve a tagadójel után felsoroltakat.

Minden más szimbólum önmagát jelenti, és nem hordoz semmilyen további terhelést. Ha a felsorolt ​​karakterek közül egyet önmagának kell írni, akkor ezt meg kell előznie<Спецсимвол>. Magamat<Спецсимвол>(bármely megfelelő karakter) ugyanabban az utasításban van definiálva a SPECIAL CHARACTER kulcsszó után.

Megvalósítva a 8.3.6.1977 verzióban.

Bővítettük a karakterláncokkal való együttműködésre tervezett függvények körét. Ezt annak érdekében tettük, hogy fejlettebb eszközöket biztosítsunk a karakterlánc-adatok elemzéséhez. Az új funkciók kényelmesek és hasznosak lesznek a szövegelemzés technológiai feladataiban. A formázott formában adatokat tartalmazó szöveg elemzésével kapcsolatos feladatokban. Ez lehet a berendezéstől kapott egyes fájlok elemzése, vagy például egy technológiai napló elemzése.

Minden olyan műveletet végrehajthat, amely korábban új funkciókat hajt végre. Beépített nyelven írt többé-kevésbé bonyolult algoritmusok használata. Ezért az új funkciók nem adnak alapvetően új képességeket. Lehetővé teszik azonban a kód mennyiségének csökkentését, valamint a kód egyszerűbbé és érthetőbbé tételét. Ezenkívül lehetővé teszik a műveletek végrehajtásának felgyorsítását. Mert a platformban megvalósított funkciók természetesen gyorsabban működnek, mint egy hasonló, beépített nyelven írt algoritmus.

Formázási függvény StrTemplate()

Ez a függvény a paramétereket karakterláncba helyettesíti. Ilyen átalakítás szükségessége gyakran felmerül, például figyelmeztető üzenetek megjelenítésekor. Ennek a függvénynek a szintaxisa a következő:

StrTemplate(<Шаблон>, <Значение1-Значение10>)

<Шаблон>- ez az a karakterlánc, amelybe be kell cserélni a paraméterreprezentációkat.

<Значение1> , ... <Значение10>- ezek olyan paraméterek (maximum tíz), amelyek reprezentációit be kell cserélni a karakterláncba.

Ahhoz, hogy a sablonban egy adott helyet jelezzen, ahol a helyettesítést el kívánja végezni, olyan jelölőket kell használnia, mint a %1, ... %10. A sablonban szereplő markerek számának és az értékeket tartalmazó paraméterek számának meg kell egyeznie.

Például egy ilyen operátor végrehajtásának eredménye:

lesz egy sor:

Adathiba a 2. sorban (dátumtípus szükséges)

StrCompare() karakterláncokkal való munkavégzésre szolgáló függvény

Ez a függvény két karakterláncot hasonlít össze a kis- és nagybetűk megkülönböztetése nélkül. Például így:

Ugyanezt a műveletet korábban is végrehajthatja az Érték-összehasonlítás objektum használatával:

Az új funkció használata azonban egyszerűbbnek tűnik. Ezen túlmenően a funkció az Érték-összehasonlítás objektumtól eltérően vékony kliensben és webes kliensben is működik.

Függvények a StrStartsWith(), StrEndsAt() karakterláncokkal való munkához

Ezek a függvények határozzák meg, hogy egy karakterlánc egy megadott részkarakterlánccal kezdődik-e, vagy egy karakterlánc egy megadott részkarakterlánccal végződjön. Ezeknek a függvényeknek az algoritmusát nem nehéz beágyazott nyelven megvalósítani, de jelenlétük lehetővé teszi, hogy tisztább és érthetőbb kódokat írjunk. És gyorsabban dolgoznak.

Például kényelmesen használhatók az If utasításban:

StrDivide(), StrConnect() karakterláncokkal végzett munka függvényei

Ezek a függvények egy karakterláncot részekre osztanak egy meghatározott határoló használatával. Vagy fordítva, több sort egyesítenek egybe, beillesztve közéjük a kiválasztott elválasztót. Kényelmesek naplók és technológiai naplók létrehozásához vagy elemzéséhez. Például egy technológiai naplóbejegyzést egyszerűen elemezhet további elemzésre alkalmas részekre:

StrFind() karakterláncokkal való munkavégzésre szolgáló függvény

A régi Find() függvény helyett egy új függvényt implementáltunk, amely további képességekkel rendelkezik:

  • Keresés különböző irányokba (az elejétől, a végétől);
  • Keresés egy megadott pozícióból;
  • Meghatározott számú előfordulás keresése (második, harmadik stb.).

Valójában megkettőzi a régi funkció képességeit. Ez a régebbi verziókban lefordított modulokkal való kompatibilitás fenntartása érdekében történik. Javasoljuk, hogy többé ne használja a régi Find() függvényt.

Az alábbiakban egy példa látható az új keresési lehetőségek használatára. A fordított keresés akkor hasznos, ha szüksége van egy formalizált karakterlánc utolsó részére, például a teljes fájlnévre az URL-ben. És a megadott pozícióból történő keresés segít azokban az esetekben, amikor egy ismert töredékben kell keresni, és nem a teljes sorban.