1s 8 ako reťazcové operácie. Nové funkcie pre prácu s reťazcami

ČASŤ 1. METÓDY (26).

1.1. Základné metódy (10). Nezávislé, postavené na vlastných jednoduchých algoritmoch.

Page_Add() (pravo-ľavé sčítanie so špecifikovanými znakmi).

Page_Inverse () (inverzia - znaky sprava doľava).

Page_Codes() (kódy znakov cez „,“ a pole s kódmi)

Page_Characters() (reťazec kódov oddelených ”,” alebo z poľa s kódmi)

Page_ReplaceSymbols() (nahradenie niektorých znakov inými).

String_FromArray() (reťazec z poľa fragmentov oddelených oddeľovačom)

Page_FindIn() (hľadá podreťazec (aj vpravo) so zadaným číslom výskytu).

Page_FindGr() (vyhľadá skupinu znakov zahrnutých v zadanej znakovej sade)

Page_FindNumber() (Vyhľadajte číslo, vrátane čísla vpravo so zadaným číslom výskytu)

Page_Interpret() (do poľa, podľa zavedenej syntaxe)

1.2. Derivačné metódy (12). V skutočnosti ide o použitie štyroch zovšeobecnených metód algoritmu (pozri časť 2)

Page_Number() (od začiatku a od konca riadku, „nebojte sa“ nečíselných znakov.

Page_Find() (hľadá podreťazec (vrátane nerozlišovania veľkých a malých písmen a vpravo) so zadaným číslom výskytu).

Page_Replace() (vyhľadávanie (vrátane bez rozlišovania malých a veľkých písmen a pravotočivých) a nahradenie podreťazcov oddeľovačov.

Str_Piece() (kúsok reťazca medzi určenými výskytmi oddeľovača (vľavo alebo vpravo)).

Page_ReplacePiece() (nahrádza „kúsok“ v zdrojovom reťazci zadaným reťazcom).

Page_ВArray() (medzi určenými výskytmi oddeľovača (vrátane tých napravo a bez malých a veľkých písmen).

Page_TransferBySyllables() (rozdelené na podreťazce „Sotva“, so spojovníkom).

Page_TransferByWords() (rozdelené na podreťazce „jemne“)

Page_Cut() („Vystrihnúť“ na podreťazce špecifikovaných dĺžok)

Str_Shorten() (nahradiť ľavú skupinu „skrátených“ znakov „náhradným reťazcom“

Page_Abbreviation() (nahraďte pravú skupinu „redukovaných“ znakov „náhradným reťazcom“

Str_ShortenS() (nahradiť v strede skupiny „skrátených“ znakov „náhradným reťazcom“

Page_Extend (rozšírenie na určenú dĺžku zvýšením počtu špecifikovaných znakov)

1.3. Podrobné metódy (3). "Rozoberanie" riadku s prenosom do tabuľky s podrobnými informáciami.

Page_vTableIn() (do tabuľky podľa systému vnorených oddeľovačov).

Page_vTableGr (do tabuľky podľa viacúrovňového filtra).

Page_inTableNumbers (v tabuľke s číslami a fragmentmi medzi nimi).

ČASŤ 2. VŠEOBECNÉ METÓDY-ALGORIMY (3).

Page_Occurrence() (metódy „Nájsť“ a „Nahradiť“).

Page_Fragments() (metódy “Piece”, “ReplacePiece,”InArray”,”inTableIn”).

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

Page_Split() (metódy „Posunúť po slabikách“, „Posunúť podľa slov“, „Vystrihnúť“).

ČASŤ 3. UNIVERZÁLNA FUNKCIA.

Toto je druh podmieneného programovacieho rozhrania, ktoré umožňuje

použiť niekoľko metód na reťazec naraz. Realizované ako

funkcie so siedmimi parametrami ("Demo" je postavené na tejto funkcii):

Stránka_(metódy, podmetódy, vstup, parameter1, parameter2, dĺžka_číslo_pozícia, dodatočný výstup)

Možnosti:

- „Metódy“ - niekoľko „kombinovaných“ a (alebo) jedna „exkluzívna“ metóda

(jednoznakové kódy alebo mená, možné cez ",")

- „Podmetódy“ - niekoľko „kombinovaných“ a (alebo) „exkluzívnych“ možností

„výlučná“ metóda (jednoznakové kódy alebo názvy);

- „Vstup“ - Reťazec, pole alebo tabuľka hodnôt;

- „Param1“ - vyhľadávací reťazec, substitúcie, oddeľovače, filtre;

- „Param2“ - náhradný reťazec alebo znaky;

- "Dĺžka_číslo_pozícia" -Číslo, čísla cez oddeľovač alebo pole s číslami;

- „Dodatočný výstup“ - Číslo alebo reťazec alebo pole alebo tabuľka hodnôt;

Názvy a/alebo jednoznakové kódy podmetód, ako aj čísla v

(Length_Number_Position) môže byť v každom prípade oddelené

ktorýkoľvek z týchto oddeľovačov: ”, :;”.

ČASŤ 4. NIEKOĽKO PRÍKLADOV.

There areNumbersInLine=(Str_FindNumber(InLine)<>Nedefinované);

V riadku sú čísla = (String_FindGr(Inline,"+0123456789")>0);

Existuje latinčina = (Str_FindGr(InStr, Str_Interpret("lL"))>0);

Existujú špecifikované znaky = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

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

ČASŤ 5. ZÁVER.

Kde sa dalo, vystačil som si s jedným prejazdom po čiare. Druhý prechod je zvyčajne v fragmentoch. Nepoužil som vstavanú funkciu StrNumberOccurrences().

Boli použité vstavané funkcie: Left(), Right(), Middle(), StrLength()

- (umiestnenie a získanie časti linky musí byť „rýchle“).

Medzi základné možnosti programovacieho jazyka zvyčajne patrí práca s číslami a reťazcami. Zvyčajne sú tieto funkcie pevne zakódované do kódu kompilátora (alebo sú implementované „základné“ triedy programovacieho jazyka).

V 1C je možnosť práce s reťazcami naprogramovaná v samotnej platforme. Dnes sa pozrieme na funkcie práce s 1C reťazcami v programoch vo vstavanom jazyku 1C.

Hodnota riadku 1C

1. Začnime tým najjednoduchším. Vytvorenie premennej a priradenie konštantnej hodnoty reťazca v 1C vyzerá takto:

Premenná = "Ahoj, svet!";

Ak potrebujete zadať znak úvodzovky v konštantnej hodnote reťazca 1C, musíte ho zdvojnásobiť „“

Premenná = "Ahoj, svet"!;

2. Zalomenie riadku 1C môže byť špecifikované dvoma spôsobmi naraz. Prvým je použitie symbolu |

Premenná = "Dobrý deň,
| svet! ";

Druhým je použitie systémovej enumerácie Symbols. Umožňuje vám pridať zalomenia riadkov 1C a ďalšie netlačiteľné znaky, ako napríklad TAB.

Premenná = "Ahoj" + Symboly.PS + "mier!";

3. Konfigurácie v 1C môžu byť vyvinuté nielen pre jeden jazyk (ruština, angličtina alebo iný) - ale súčasne pre niekoľko jazykov. V tomto prípade sa aktuálne používaný jazyk vyberie v spodnej časti okna 1C.

Zoznam jazykov sa nachádza v konfiguračnom okne vo vetve Všeobecné/Jazyky. Každý jazyk má krátky identifikátor ako napr ru alebo Ing.

Je jasné, že pri programovaní takejto konfigurácie môžu byť linky 1C aj viacjazyčné. Na tento účel je možné vytvoriť takýto riadok 1C zadaním cez; možnosti podľa identifikátora jazyka:

Premenná = "ru=""Ahoj svet! ""; en=""Ahoj svet! """;

Ak použijete čiaru 1C vytvorenú týmto spôsobom ako zvyčajne, bude to, čo je v nej napísané. Aby ho systém rozdelil na dve možnosti a použil požadovanú, musíte použiť funkciu НStr():

//správne pre dvojjazyčné konfigurácie
Správa(NStr(Premenná));

Rekvizity s líniou typu 1C

Atribút je pole v adresári/dokumente 1C. Od premennej v programe v jazyku 1C sa líši tým, že pre atribút je presne uvedený jej typ (číslo, reťazec 1C atď.). Ak si potrebujete osviežiť pamäť, čo je to rekvizita, pozrite si lekciu ďalej.

Ak zadáte typ atribútu - riadok 1C, musíte dodatočne zadať parametre.

1C riadky majú neobmedzenú dĺžku (označuje sa ako dĺžka = 0) a obmedzenú dĺžku s uvedením presného počtu znakov. 1C riadky neobmedzenej dĺžky sú uložené v samostatnej SQL tabuľke, takže ich použitie je menej produktívne ako obmedzené.

Preto má použitie 1C strún neobmedzenej dĺžky svoje obmedzenia - nie je možné ich použiť všade. Nie je napríklad povolené ako číslo dokumentu, referenčný kód alebo meranie.

Práca so strunami 1C

Pre prácu so strunami je v platforme 1C zabudovaných niekoľko funkcií.

  • AbbrLP („Neuveriteľné, ale pravdivé!“)
    Odstraňuje nadbytočné medzery z riadku 1C. Môže sa použiť aj na prevod akýchkoľvek typov na reťazec 1C (napríklad čísla).
  • Premenná = "Vasya" + AbbrLP(" plus") + "Olya"; //bude "Vasya plus Olya"
    Príklad sčítania niekoľkých hodnôt reťazca 1C. Výsledkom bude jeden riadok 1C.
  • Premenná = Lev("Hudba", 2); //bude "Mu"
    Premenná = Medium("Hudba", 2, 2); //bude tam "hrozba"
    Premenná = Práva("Hudba", 2); //bude "ka"
    Rôzne možnosti získania podreťazca z reťazca 1C.
  • Premenná = Nájsť ("Hudba", "zy"); //budú 3
    Vyhľadajte podreťazec v reťazci 1C, začínajúci znakom 1.
  • Premenná = StrLength("Hudba"); //bude ich 6
    Vráti počet znakov v riadku 1C.
  • Report("Ahoj") //v okne správy v spodnej časti okna 1C
    Alert("Ahoj") //vyskakovacie dialógové okno
    Status("Ahoj") //v riadku zobrazenia stavu vľavo dole
    .

Prineste predmety na riadok 1C

Ako viete, v súčasnosti je najpopulárnejším formátom na výmenu štruktúrovaných informácií XML. Dokonca aj najnovšia verzia MS Office Word a Excel ukladá súbory v tomto formáte (docx a xlsx zmenia príponu na zip, otvoria v archivátore).

Platforma 1C na výmenu údajov poskytuje niekoľko možností, z ktorých hlavnou je tiež XML.

1. Najjednoduchšou metódou je použitie funkcie Abbreviation() alebo String(). V tele žiadosti môžete použiť funkciu REPRESENTATION(). Výsledok ich akcie je rovnaký – používateľovi vygenerujú reťazcovú reprezentáciu ľubovoľného objektu 1C.

V prípade adresára to bude štandardne jeho názov. Pre dokument - názov dokumentu, číslo a dátum.

2. Akýkoľvek objekt 1C (s obmedzeniami) je možné previesť do XML a naopak. Proces konverzie sa nazýva serializácia.

StringViewXml = XMLString(Hodnota); //získanie XML z hodnoty 1C
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypStringXml); //získajte hodnotu 1C z reťazca XML, musíte zadať typ 1C, ktorý sa má prijať

3. Existuje vlastný spôsob platformy 1C, ako previesť akýkoľvek objekt 1C na reťazec. Prešiel z verzie 1C 7.7. Tomuto formátu iné programy nerozumejú, ale iné 1C mu rozumejú, čo uľahčuje jeho používanie na výmenu medzi databázami 1C.

Riadok = ValueInRowInt(Value1C); //získame reťazec 1C z hodnoty 1C
ValueVFile("C:\MyFile.txt", Hodnota1C); //ďalšia možnosť, z hodnoty 1C dostaneme súbor s uloženým reťazcom
Hodnota1C = ValueFromStringInt(String); //späť z riadku 1C
Hodnota1C = ValueFile("C:\MyFile.txt"); //späť zo súboru

Úprava riadkov 1C vo formulári

Okrem práce s 1C reťazcami v programe v jazyku 1C by som bol samozrejme rád, keby ich používateľ mohol upravovať. Existuje na to niekoľko možností:

1. Najjednoduchším spôsobom je požiadať o vstup linky 1C na požiadanie. Táto metóda sa používa pri výučbe programovania 1C v živote sa používa oveľa menej často (ale používa sa!).

Premenná = "";
Riadok = EnterValue(Premenná, "Zadajte celé meno");

2. Na zobrazenie detailov objektu 1C (adresár/dokument) alebo detailov formulára (pozri) sa najčastejšie používa vstupné pole. Toto je najbežnejší nástroj v 1C pre používateľa na prácu s poľami úprav.

3. Možnosti vstupného poľa je možné rozšíriť (pozrite si vlastnosti vstupného poľa, kliknite naň pravým tlačidlom myši, ďalšie podrobnosti):

  • Začiarkavacie políčko Režim viacriadkovej úpravy
  • Začiarkavacie políčko Rozšírené úpravy (dostupné, ak je začiarknuté predchádzajúce políčko)
  • Zaškrtávacie políčko Režim hesla (pozri).

4. Ak by vám nestačili všetky možnosti vstupného poľa, je tu zabudovaný editor. Ak ho chcete pridať do formulára, musíte pridať pole textového dokumentu do ponuky Ovládací prvok formulára/vložiť. V jeho vlastnostiach môžete určiť jeho prevádzkový režim – vlastnosť Rozšírenie.

Pole textového dokumentu nemožno priamo priradiť k údajom. Je potrebné napísať funkciu do obsluhy udalosti OnOpen() formulára (pozri):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //tu ValueString je text prijatý napríklad z atribútu

A v obslužnom programe uloženia - napríklad v tlačidle Uložiť - pridajte uloženie:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //HodnotaRiadok je atribút, do ktorého uložíme hodnotu

5. Vo verzii 1C 8.2.11 sa v spravovaných formulároch objavila nová možnosť reprezentácie riadku 1C - pole Formátovaný dokument.


Podobne ako pole textového dokumentu si ho musíte nastaviť pri jeho otváraní a zapísať si ho pri ukladaní sami pomocou programu.

  • V objekte 1C, ktorého formulár vytvárame (adresár, dokument, spracovanie atď.) - pridajte atribút s typom Uloženie hodnoty
  • Vo funkcii OnReadOnServer() nastavíme text z atribútu

    //tu Atribút je pridaný atribút objektu 1C
    //tu FormattedDocument je názov poľa vo formulári na úpravu
    &Na serveri

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProcedure

  • Vo funkcii BeforeWritingOnServer() alebo pomocou tlačidla napíšeme text z poľa

    &Na serveri
    Postup pri ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    EndProcedure

Typ String sa nachádza vo všetkých programovacích jazykoch. Je to primitívne a v 1C je veľa funkcií na prácu s ním. V tomto článku sa na príkladoch podrobne pozrieme na rôzne spôsoby práce s typmi reťazcov v 1C 8.3 a 8.2.

Linka

Na konverziu premennej akéhokoľvek typu na reťazec existuje funkcia s rovnakým názvom „String()“. Vstupným parametrom bude samotná premenná, ktorej reťazcovú reprezentáciu je potrebné získať.

String(False) // vráti "Nie"
String(12345) // vráti "12 345"
String(CurrentDate()) //"07/21/2017 11:55:36″

Na reťazec je možné previesť nielen primitívne typy, ale aj iné, napríklad prvky adresárov a dokumentov.

SokrLP, SokrL, SokrP

Vstupnými parametrami týchto funkcií sú premenná typu reťazec. Funkcie odstraňujú nepodstatné znaky (medzery, návraty vozíka atď.): z ľavej a pravej strany, iba z ľavej strany a iba z pravej, resp.

Skratka(" Medzery budú odstránené na oboch stranách ") // "Medzery na oboch stranách budú odstránené"
Skratka(" Medzery na oboch stranách budú odstránené ") // " Medzery na ľavej strane budú odstránené "
Skratka(" Medzery na oboch stranách budú odstránené ") // " Medzery na pravej strane budú odstránené"

Lev, vpravo, stredný

Tieto funkcie vám umožňujú orezať časť reťazca. Funkcia "Left()" vráti časť reťazca z jeho ľavej strany zadanej dĺžky. Funkcia „Right()“ je podobná, ale orezáva sprava. Funkcia „Avg()“ vám umožňuje určiť číslo znaku, z ktorého bude riadok vybraný, a jeho dĺžku.

Lev("String variable", 4) // vráti "Str"
Right("String variable", 7) // vráti "variable"
Medium("String variable", 2, 5) // vráti "troko"

StrLength

Funkcia určuje počet znakov, ktoré sú obsiahnuté v reťazcovej premennej.

StrLength("Word") // výsledkom vykonania bude číslo 5

Nájsť

Funkcia umožňuje vyhľadať časť reťazca v reťazcovej premennej. Návratová hodnota bude číslo, ktoré ukazuje pozíciu začiatku nájdeného reťazca. Ak sa nenájde žiadna zhoda, vráti sa nula.

Upozorňujeme, že vyhľadávanie rozlišuje malé a veľké písmená. Ak je v pôvodnom reťazci viac ako jeden výskyt hľadaného podreťazca, funkcia vráti začiatok prvého výskytu.

Funkcia Find("jeden, dva, jedna, dva, tri", "dva") // vráti číslo 6

Prázdny riadok

Pomocou tejto funkcie môžete určiť, či je reťazec prázdny. Vedľajšie znaky ako medzera, návrat vozíka a iné sa neberú do úvahy.

EmptyString("Pupkin Vasily Ivanovich") // funkcia vráti hodnotu False
EmptyString(" ") // funkcia vráti hodnotu True

VReg, NReg, TReg

Tieto funkcie sú veľmi užitočné pri porovnávaní a konverzii reťazcových premenných. "Vreg()" vráti pôvodný reťazec veľkými písmenami, "HPreg()" malými písmenami a "TReg()" ho naformátuje tak, že prvý znak každého jednotlivého slova bude veľký a všetky nasledujúce znaky budú veľké.

VReg("GENERAL DIRECTOR") // návratová hodnota - "CEO DIRECTOR"
NReg(“CEO DIRECTOR”) // návratová hodnota – “CEO”
TREG(“CEO DIRECTOR”) // návratová hodnota – “General Director”

PageReplace

Táto funkcia je analogická s nahradzovaním v textových editoroch. Umožňuje vám nahradiť jeden znak alebo sadu znakov iným v reťazcových premenných.

StrReplace("red, white, yellow", ","", ";") // vráti "red; biely; žltá"

StrNumberLines

Funkcia vám umožňuje určiť počet riadkov oddelených znakmi konca riadku v textovej premennej.

Slučka v nižšie uvedenom príklade prejde tromi cyklami, pretože funkcia LineNumberRow vráti hodnotu 3:

Pre ind = 1 podľa StrNumber of Strings ("Riadok1" + Symboly.PS + "Riadok2" + Symboly.PS + "Riadok3")
<тело цикла>
EndCycle;

StrGetString

Táto funkcia pracuje s viacriadkovým textom rovnakým spôsobom ako predchádzajúca. Umožňuje vám získať konkrétny reťazec z textovej premennej.

StrGetString("String1" + Characters.PS + "Reťazec2" + Characters.PS + "Reťazec3", 2) // návrat "String2"

PageNumberOccurrences

Funkcia počíta počet výskytov znaku alebo podreťazca vo vyhľadávanom reťazci.

StrNumberAttachments("a;b;c;d; ", ";") // funkcia vráti číslo 4

Symbol a kód symbolu

Tieto funkcie vám umožňujú získať znak podľa jeho kódu v kódovaní Unicode, ako aj určiť tento kód podľa samotného znaku.

Funkcia SymbolCode("A") // vráti číslo 1 040
CharacterCode(1040) // funkcia vráti „A“

Bežné úlohy pri práci so strunami

Reťazové struny

Na spojenie viacerých reťazcov (na vykonanie zreťazenia) stačí použiť operátor sčítania.

"Riadok 1" + "Riadok 2" //výsledkom pridania dvoch riadkov bude "Riadok 1 Riadok 2"

Typ Konverzia

Na konverziu typu na reťazec, napríklad odkaz na prvok adresára, číslo atď., stačí použiť funkciu „String()“. Funkcie ako „ScrLP()“ tiež konvertujú premenné na reťazec, ale okamžite s odrezaním nepodstatných znakov.

String(1000) // vráti "1 000"

Upozorňujeme, že pri prevode čísla na reťazec program automaticky pridal medzeru oddeľujúcu tisícku. Aby ste tomu zabránili, môžete použiť nasledujúce konštrukcie:

StrReplace(String(1000),Characters.NPP,"") // vráti "1000"

String(Format(1000,"HG=")) // vráti "1000"

Citácie v reťazci

Pomerne často sa budete musieť vysporiadať s potrebou zadať úvodzovky do reťazcovej premennej. Môže to byť buď text požiadavky napísaný v konfigurátore, alebo len premenná. Na vyriešenie tohto problému stačí nastaviť dve úvodzovky.

Hlavička = String("Rohy and Hooves LLC - to sme my!") // vráti "Horns and Hooves LLC - to sme my!"

Viacriadok, zalomenie riadku

Ak chcete vytvoriť viacriadkový text, stačí k nemu pridať zlomy riadkov (Symbols.PS).

Viacriadkový text = „Prvý riadok“ + Symboly.PS + „Druhý riadok“

Ako odstrániť medzery

Na odstránenie medzier vpravo alebo vľavo môžete použiť funkciu „ScrAP()“ (rovnako ako „ScrL()“ a „ScrP()“):

StringNoSpaces = Skratka(" Veľa písmen ") // funkcia vráti hodnotu "Veľa písmen"

Ak po prevode čísla na reťazec potrebujete odstrániť pevné medzery, použite nasledujúcu konštrukciu:

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // vráti "99999"

Programátori tiež často používajú nasledujúcu konštrukciu, ktorá vám umožňuje odstrániť alebo nahradiť iným znakom všetky medzery v textovej premennej:

StringNoSpaces = StrReplace("ahoj","") // vráti "ahoj"

Porovnávanie reťazcov medzi sebou

Výrazy môžete porovnať s obvyklým znakom rovnosti. Pri porovnaní sa rozlišujú malé a veľké písmená.

"Ahoj" = "ahoj" // vráti hodnotu False
"Ahoj" = "Ahoj" // vráti hodnotu True
"Ahoj" = "Dovidenia" // vráti hodnotu False

Existuje niekoľko mechanizmov na prácu s reťazcami v dopytoch 1C. Najprv je možné pridať riadky. Po druhé, môžete vziať podreťazec z reťazca. Po tretie, reťazce možno porovnávať, a to aj podľa vzoru. To je asi všetko, čo sa dá so šnúrkami robiť.

Pridávanie reťazcov

Na pridanie riadkov do dotazu sa používa operácia „+“. Môžete pridať iba reťazce obmedzenej dĺžky.

SELECT "Názov: " + Protistrany Názov AS Stĺpec 1 Z adresára Protistrany AS Protistrany WHERE Protistrany

Funkcia podreťazca

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

Analóg funkcie Environment() z objektového modelu. Funkciu Substring() možno použiť na údaje reťazca a umožňuje vám vybrať fragment <Строки> , začínajúc číslom znaku <НачальнаяПозиция> (znaky v riadku sú číslované od 1) a dĺžku <Длина> postavy. Výsledok výpočtu funkcie má typ reťazca s premenlivou dĺžkou a dĺžka sa bude považovať za neobmedzenú, ak <Строка> má neobmedzenú dĺžku a parametre <Длина> nie je konštantná alebo väčšia ako 1024.

Ak je dĺžka reťazca menšia ako špecifikovaná v druhom parametri, funkcia vráti prázdny reťazec.

Pozor! Použitie funkcie SUBSTRING() na konverziu reťazcov neobmedzenej dĺžky na reťazce obmedzenej dĺžky sa neodporúča. Namiesto toho je lepšie použiť operátor obsadenia EXPRESS().

Funkcia podobná

Ak sa potrebujeme uistiť, že atribút reťazca spĺňa určité kritériá, porovnáme ho:

VYBERTE protistrany Názov AS Stĺpec 1 Z adresára Protistrany AS Protistrany WHERE Protistrany.

Ale čo ak potrebujete jemnejšie porovnanie? Nielen rovnosť alebo nerovnosť, ale podobnosť s určitým vzorom? Presne na to bola vytvorená funkcia PODOBNÉ.

LIKE — Operátor na kontrolu podobnosti reťazca so vzorom. Analóg LIKE v SQL.

Operátor PODOBNÉ vám umožňuje porovnať hodnotu výrazu zadaného naľavo od neho s reťazcom vzoru zadaným napravo. Hodnota výrazu musí byť typu string. Ak sa hodnota výrazu zhoduje so vzorom, výsledok operátora bude TRUE, inak bude FALSE.

Nasledujúce znaky v reťazci vzoru sú servisné znaky a majú iný význam ako znak reťazca:

  • % (percento): sekvencia obsahujúca ľubovoľný počet ľubovoľných znakov;
  • _ (podčiarkovník): jeden ľubovoľný znak;
  • […] (jeden alebo viac znakov v hranatých zátvorkách): akýkoľvek jednotlivý znak uvedený v hranatých zátvorkách. Enumerácia môže obsahovať rozsahy, napríklad a-z, čo znamená ľubovoľný znak zahrnutý v rozsahu, vrátane koncov rozsahu;
  • [^...] (v hranatých zátvorkách znak záporu, za ktorým nasleduje jeden alebo viacero znakov): každý jeden znak okrem tých, ktoré sú uvedené za znakom záporu.

Akýkoľvek iný symbol znamená sám seba a nenesie žiadnu dodatočnú záťaž. Ak jeden z uvedených znakov musí byť napísaný ako samotný, potom mu musí predchádzať<Спецсимвол>. Ja sám<Спецсимвол>(akýkoľvek vhodný znak) je definovaný v rovnakom príkaze za kľúčovým slovom SPECIAL CHARACTER.

Realizované vo verzii 8.3.6.1977.

Rozšírili sme sadu funkcií určených na prácu s reťazcami. Urobili sme to preto, aby sme vám poskytli pokročilejšie nástroje na analýzu údajov reťazca. Nové funkcie budú pohodlné a užitočné pri technologických úlohách analýzy textu. V úlohách súvisiacich s analýzou textu, ktorý obsahuje údaje vo formátovanej forme. Môže to byť analýza niektorých súborov prijatých zo zariadenia, alebo napríklad analýza technologického denníka.

Predtým ste mohli vykonávať všetky akcie, ktoré vykonávajú nové funkcie. Používanie viac či menej zložitých algoritmov napísaných v zabudovanom jazyku. Nové funkcie vám preto nedávajú zásadne nové schopnosti. Umožňujú vám však znížiť množstvo kódu a urobiť kód jednoduchším a zrozumiteľnejším. Okrem toho vám umožňujú urýchliť vykonávanie akcií. Pretože funkcie implementované v platforme fungujú, samozrejme, rýchlejšie ako podobný algoritmus napísaný vo vstavanom jazyku.

Funkcia formátovania StrTemplate()

Táto funkcia nahrádza parametre do reťazca. Potreba takejto konverzie často vzniká napríklad pri zobrazovaní varovných správ. Syntax tejto funkcie je nasledovná:

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

<Шаблон>- toto je reťazec, do ktorého musíte nahradiť reprezentácie parametrov.

<Значение1> , ... <Значение10>- ide o parametre (maximálne desať), ktorých reprezentácie musia byť dosadené do reťazca.

Na označenie konkrétneho miesta v šablóne, kde chcete vykonať nahradenie, musíte použiť značky ako %1, ... %10. Počet značiek zahrnutých v šablóne a počet parametrov obsahujúcich hodnoty sa musia zhodovať.

Napríklad výsledok vykonania takéhoto operátora:

bude tam riadok:

Chyba údajov na riadku 2 (vyžaduje sa typ dátumu)

Funkcia na prácu s reťazcami StrCompare()

Táto funkcia porovnáva dva reťazce bez ohľadu na veľkosť písmen. Napríklad takto:

Rovnakú akciu môžete vykonať skôr pomocou objektu Porovnanie hodnôt:

Používanie novej funkcie však vyzerá jednoduchšie. A okrem toho funkcia na rozdiel od objektu Value Comparison funguje v tenkom aj webovom klientovi.

Funkcie na prácu s reťazcami StrStartsWith(), StrEndsAt()

Tieto funkcie určujú, či reťazec začína určeným podreťazcom alebo či reťazec končí určeným podreťazcom. Algoritmus pre tieto funkcie nie je ťažké implementovať vo vstavanom jazyku, ale ich prítomnosť vám umožňuje písať čistejší a zrozumiteľnejší kód. A pracujú rýchlejšie.

Napríklad je vhodné ich použiť v príkaze If:

Funkcie na prácu s reťazcami StrDivide(), StrConnect()

Tieto funkcie rozdeľujú reťazec na časti pomocou určeného oddeľovača. Alebo naopak, spoja niekoľko riadkov do jedného, ​​pričom medzi ne vložia vybraný oddeľovač. Sú vhodné na vytváranie alebo analýzu denníkov a technologických denníkov. Napríklad môžete jednoducho analyzovať záznam technologického denníka na časti vhodné na ďalšiu analýzu:

Funkcia na prácu s reťazcami StrFind()

Namiesto starej funkcie Find() sme implementovali novú funkciu, ktorá má ďalšie možnosti:

  • Hľadať v rôznych smeroch (od začiatku, od konca);
  • vyhľadávanie zo zadanej pozície;
  • Vyhľadajte výskyt so zadaným číslom (druhý, tretí atď.).

V skutočnosti duplikuje schopnosti starej funkcie. Deje sa tak s cieľom zachovať kompatibilitu s modulmi zostavenými v starších verziách. Odporúča sa, aby ste už nepoužívali starú funkciu Find().

Nižšie je uvedený príklad použitia nových možností vyhľadávania. Spätné vyhľadávanie je užitočné, keď potrebujete posledný fragment formalizovaného reťazca, ako je napríklad úplný názov súboru v adrese URL. A vyhľadávanie zo zadanej pozície pomáha v prípadoch, keď potrebujete hľadať v známom fragmente a nie v celom riadku.