Domov / Sociálne médiá / 1c nájdite druhý výskyt v reťazci. Nové funkcie pre prácu s reťazcami. Ako odstrániť medzery

1c nájdite druhý výskyt v reťazci. Nové funkcie pre prácu s reťazcami. Ako odstrániť medzery

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 to pozrieme bližšie rôznymi spôsobmi prácu s typmi reťazcov v 1C 8.3 a 8.2 pomocou príkladov.

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 budú odstránené na oboch stranách"
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 veľké a malé 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.

Find("jeden, dva, jeden, dva, tri", "dva") // funkcia 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 - "GENERAL DIRECTOR"
NReg(“CEO DIRECTOR”) // návratová hodnota – “CEO”
TREG(“CEO DIRECTOR”) // návratová hodnota – “General Director”

PageReplace

Táto funkcia je analogický s výmenou v textové editory. 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

Ak chcete odstrániť medzery 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ť neprerušiteľné priestory, 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

Medzi základné možnosti programovacieho jazyka zvyčajne patrí práca s číslami a reťazcami. Zvyčajne sú tieto vlastnosti 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 vyzerá takto v 1C:

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 obvykle, 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. Napríklad nie je 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é!“)
    Odstráni sa z riadku 1C extra priestory. Dá 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 počnúc 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 Najnovšia verzia PANI Office Word a Excel ukladajú súbory v tomto formáte (docx a xlsx zmenia príponu na zip, otvoria sa 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 úpravy viacerých riadkov
  • 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 do ovládacieho menu Formulár/Vložiť textový dokument. 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, in kontrolované formuláre, objavilo sa nová príležitosť 1C čiarová reprezentácia – Formátované pole dokumentu.


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();
    Koniec procedúry

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

    &Na serveri
    Postup pri ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Koniec procedúry

Č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 s určené číslo výskyty)

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_MoveByWords() (rozdeliť 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().

Používajú sa vstavané funkcie: Left (), Right (), Middle (), StrLength ()

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

Reťazec je jedným z primitívnych dátových typov v systémoch 1C:Enterprise 8. Premenné s typom riadok obsahovať text.

Zadajte hodnoty premenných riadok sú uvedené v úvodzovkách. Je možné pridať niekoľko premenných tohto typu.

Per1 = "Slovo 1" ;
Per2 = "Slovo 2" ;
Per3 = Per1 + " " + Per2;

Nakoniec Per3 bude znamenať" Slovo 1 Slovo 2″.

Systémy 1C:Enterprise 8 navyše poskytujú funkcie pre prácu s reťazcami. Pozrime sa na tie hlavné:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funkcia je navrhnutá tak, aby zobrazila dialógové okno, v ktorom môže používateľ zadať hodnotu variabilný typ Linka. Parameter <Строка> je povinný a obsahuje názov premennej, do ktorej sa zadaný reťazec zapíše. Parameter <Подсказка> voliteľné – toto je názov dialógového okna. Parameter <Длина> voliteľné, zobrazuje maximálnu dĺžku vstupného reťazca. Predvolená hodnota je nula, čo znamená neobmedzenú dĺžku. Parameter <Многострочность> voliteľné. Definuje režim viacriadkového zadávania textu: True—viacriadkový textový vstup s oddeľovačmi riadkov; False - zadajte jednoduchý reťazec.

Ak poznáte kód znaku v Unicode, môžete zadať reťazec:

Symbol(<КодСимвола>) — kód sa zadáva ako číslo.

Letter= Symbol(1103) ; // Ja

Existuje aj inverzná funkcia, ktorá vám umožní zistiť kód symbolu.

Kód symbolu(<Строка>, <НомерСимвола>) — vráti číslo Unicode zadaného znaku ako číslo.

Funkcie prevodu malých a veľkých písmen:

VReg(<Строка>) — Prevedie všetky znaky v reťazci na veľké písmená.

NReg(<Строка>) — Prevedie všetky znaky v reťazci na malé písmená.

TReg(<Строка>) — prevedie všetky znaky v reťazci na veľké a malé písmená. To znamená, že prvé písmená všetkých slov sa skonvertujú na veľké písmená a zvyšné písmená sa skonvertujú na malé.

Funkcie na vyhľadávanie a nahradenie znakov v reťazci:

Nájsť(<Строка>, <ПодстрокаПоиска>) — nájde číslo znaku výskytu hľadaného podreťazca. Napríklad:

Nájsť ("String" , "oka" ) ; // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — nájde číslo znaku výskytu hľadaného podreťazca, číslo výskytu je uvedené v príslušnom parametri. V tomto prípade vyhľadávanie začína znakom, ktorého číslo je uvedené v parametri Počiatočná poloha. Vyhľadávanie je možné od začiatku alebo od konca reťazca. Napríklad:

Počet4 výskytov = Str Nájsť ( "obrana", "o" ,Smer hľadania. Od začiatku, 1, 4); // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – nájde všetky výskyty hľadaného podreťazca v zdrojovom reťazci a nahradí ho náhradným podreťazcom.

StrReplace ("String" , "oka" , "" ); // Stránka

Prázdny riadok (<Строка>) – skontroluje, či reťazec neobsahuje významné znaky. Ak neexistujú žiadne alebo žiadne významné znaky, vráti sa hodnota Pravda. Inak - Klamať.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – Vypočíta počet výskytov hľadaného podreťazca v zdrojovom reťazci.

StrNumberOccurrences ( "Študovať, študovať a ešte raz študovať", "študovať" , "" ); // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — nahradí parametre do reťazca číslom. Riadok musí obsahovať substitučné značky v tvare: “%1..%N”. Číslovanie značiek začína od 1. Ak je hodnota parametra Nedefinované, nahradí sa prázdny reťazec.

StrTemplate ( "Parameter 1 = %1, Parameter 2 = %2", "1" , "2" ) ; // Parameter 1= 1, Parameter 2 = 2

Funkcie konverzie reťazcov:

Lev(<Строка>, <ЧислоСимволов>) – vráti prvé znaky reťazca.

Správny(<Строка>, <ЧислоСимволов>) – vráti posledné znaky reťazca.

streda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – vráti reťazec dĺžky<ЧислоСимволов>, počnúc symbolom<НачальныйНомер>.

AbbrL(<Строка>) orezáva nevýznamné znaky vľavo od prvého významného znaku v reťazci.

Skratka(<Строка>) — odreže nepodstatné znaky napravo od posledného významného znaku v riadku.

AbbrLP(<Строка>) – odreže nepodstatné znaky naľavo od prvého významného znaku v riadku a napravo od posledného významného znaku v riadku.

StrGetString(<Строка>, <НомерСтроки>) – Získa viacriadkový reťazec podľa čísla.

Ďalšie vlastnosti:

StrLength(<Строка>) – vráti počet znakov v reťazci.

StrNumberRow(<Строка>) – vráti počet riadkov vo viacriadkovom reťazci. Riadok sa považuje za nový, ak je od predchádzajúceho oddelený znakom nového riadku.

StrCompare(<Строка1>, <Строка2> ) – porovnáva dva reťazce bez ohľadu na veľkosť písmen. Funkcia funguje podobne ako objekt Porovnanie hodnôt. Vrátenie:

  • 1 - ak je prvý riadok väčší ako druhý
  • -1 - ak je druhý riadok väčší ako prvý
  • 0 - ak sú reťazce rovnaké

StrCompare("Prvý riadok" , "Druhý riadok" ) ; // 1

Riadky v 1C 8.3 v zabudovanom jazyku 1C predstavujú hodnoty primitívneho typu Linka. Hodnoty tohto typu obsahujú reťazec Unicode ľubovoľnej dĺžky. Premenné typu reťazec sú množinou znakov uzavretých v úvodzovkách.

Príklad 1. Vytvorme reťazcovú premennú s textom.

StringVariable = "Ahoj svet!";

Funkcie pre prácu s reťazcami v 1s 8.3

Táto časť poskytuje hlavné funkcie, ktoré vám umožňujú meniť riadky v 1c alebo analyzovať informácie v nich obsiahnuté.

StrLength

StrLength(<Строка>) . Vráti počet znakov obsiahnutých v reťazci odovzdanom ako parameter.

Príklad 2. Spočítajme počet znakov v riadku „Ahoj svet!“

String = "Ahoj svet!"; Počet znakov = StrLength(String); Report(NumberCharacters);

Výsledkom vykonania tohto kódu bude zobrazenie počtu znakov v riadku: 11.

AbbrL

AbbrL(<Строка>) . Orezáva nevýznamné znaky vľavo od prvého významného znaku v reťazci.
Vedľajšie postavy:

  • priestor;
  • neprerušiteľný priestor;
  • tabelácia;
  • návrat kočiara;
  • preklad riadkov;
  • preklad formulára (stránky).

Príklad 3. Odstráňte všetky medzery z ľavej strany riadku "svet!" a pridajte k nemu riadok „Ahoj“.

String = Skratka("svet!"); String = "Ahoj"+String; Report(String);

Výsledkom vykonania tohto kódu bude zobrazenie riadku „Ahoj svet!“ na obrazovke.

Skrátené

Skratka(<Строка>) . Orezáva nevýznamné znaky vpravo od prvého významného znaku v reťazci.

Príklad 4. Formulár z riadkov „Ahoj“ a „mier!“ fráza "Ahoj svet!"

Riadok = Skratka("Ahoj ")+" "+ Skratka("svet!"); Report(String);

AbbrLP

AbbrLP(<Строка>) . Orezáva nevýznamné znaky vpravo od prvého významného znaku v reťazci a tiež orezáva nevýznamné znaky vľavo od prvého významného znaku v reťazci. Táto funkcia sa používa častejšie ako predchádzajúce dve, keďže je univerzálnejšia.

Príklad 5. Odstráňte nepodstatné znaky vľavo a vpravo v mene protistrany.

Protistrana = Adresáre. Protistrany. Nájsť podľa podrobností("TIN", "0777121211"); AccountObject = Account.GetObject(); Názov objektu protistrany = AbbrLP(Názov objektu protistrany); AccountObject.Write();

Lev

Lev(<Строка>, <ЧислоСимволов>) . Získa prvé znaky reťazca, počet znakov je zadaný v parametri Počet znakov.

Príklad 6. Vpustite štruktúru zamestnanec obsahuje meno, priezvisko a priezvisko zamestnanca. Získajte reťazec s priezviskom a iniciálami.

MenoPočiatočné = Lev(meno zamestnanca, 1); Patronymická iniciála = Lev(Zamestnanec. Patronymika, 1); Celé meno = Zamestnanec.Priezvisko + " " + Úvodné meno + "." + Stredná iniciála + ".";

Správny

Správny(<Строка>, <ЧислоСимволов>) . Získa posledné znaky reťazca, počet znakov zadaný v parametri Počet znakov. Ak zadaný počet znakov prekročí dĺžku reťazca, vráti sa celý reťazec.

Príklad 7. Nechajte na koniec premennej reťazca napísať dátum vo formáte „rrrrmmdd“, získajte reťazec s dátumom a preveďte ho na typ dátum.

Reťazec = " Aktuálny dátum: 20170910"; StringDate = Rights(String, 8); Date = Date(StringDate);

streda

streda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Získa podreťazec z reťazca odovzdaného ako parameter Linka, počnúc znakom, ktorého číslo je uvedené v parametri InitialNumber a dĺžka prenesená do parametra Počet znakov.Číslovanie znakov v riadku začína od 1. Ak je v parametri InitialNumber je zadaná hodnota menšia alebo rovná nule, potom parameter nadobudne hodnotu 1. Ak je parameter Počet znakov nie je zadané, potom sa vyberú znaky až do konca riadku.

Príklad 8. Nech reťazcová premenná začínajúca od deviatej pozície obsahuje kód regiónu, mali by ste ho získať a napísať do samostatného riadku.

Reťazec = "Región: 99 Moskva"; Oblasť = priem(reťazec, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Vyhľadá zadaný podreťazec v reťazci a vráti číslo pozície prvého znaku nájdeného podreťazca. Pozrime sa na parametre tejto funkcie:

  • Linka. Zdrojový reťazec;
  • Hľadať podreťazec. Hľadať podreťazec;
  • Smer hľadania. Určuje smer vyhľadávania podreťazca v reťazci. Môže nadobúdať hodnoty:
    • Smer hľadania. Od začiatku;
    • Smer hľadania. Koniec;
  • Počiatočná poloha. Určuje pozíciu v reťazci, na ktorej začína vyhľadávanie;
  • Počet výskytov. Určuje číslo výskytu hľadaného podreťazca v zdrojovom reťazci.

Príklad 9. V riadku „Ahoj svet!“ Určte polohu posledného výskytu znaku „a“.

PositionNumber = StrFind("Ahoj svet!", "and", SearchDirection.End); Report(PositionNumber);

Výsledkom vykonania tohto kódu bude zobrazenie čísla posledného výskytu symbolu „a“: 9.

VReg

VReg(<Строка>) . Skonvertuje všetky znaky v zadanom reťazci v 1s8 na veľké písmená.

Príklad 10: Preveďte reťazec "ahoj svet!" na veľké písmená.

StringVreg = VReg("ahoj svet!"); Report(StringVreg);

Výsledkom vykonania tohto kódu bude zobrazenie riadku „HELLO WORLD!“

NReg

NReg(<Строка>) . Skonvertuje všetky znaky zadaného reťazca v 1 s 8 na malé písmená.

Príklad 11: Preveďte reťazec "HELLO WORLD!" na malé písmená.

StringNreg = NReg("AHOJ SVET!"); Report(StringVreg);

Výsledkom vykonania tohto kódu bude zobrazenie riadku "ahoj svet!"

Treg

TReg(<Строка>) . Skonvertuje reťazec nasledovne: prvý znak každého slova sa skonvertuje na veľké, zvyšné znaky slova sa skonvertujú na malé.

Príklad 12: Veľké prvé písmená slov v riadku „ahoj svet!“

StringTreg = TReg("ahoj svet!"); Report(StringTreg);

Výsledkom vykonania tohto kódu bude zobrazenie riadku „Ahoj svet!“

Symbol

Symbol(<КодСимвола>) . Získa znak pomocou kódu Unicod.

Príklad 13. Pridajte vľavo a vpravo do riadku „Ahoj svet!“ symbol ★

StringWithStars = Symbol("9733")+"Ahoj svet!"+Symbol("9733"); Správa(StringWithStars);

Výsledkom vykonania tohto kódu bude zobrazenie riadku „★Ahoj svet!★“

Kód symbolu

Kód symbolu(<Строка>, <НомерСимвола>) . Získa kód znaku Unicode z reťazca zadaného v prvom parametri, ktorý sa nachádza na pozícii špecifikovanej v druhom parametri.

Príklad 14. Zistite kód posledného znaku v riadku „Hello World!“

String = "Ahoj Svet!"; CharacterCode = CharacterCode(String, StrLength(String)); Upozorniť(Kód znaku);

Výsledkom vykonania tohto kódu bude zobrazenie kódu symbolu „!“ - 33.

Prázdny riadok

Prázdny riadok (<Строка>) . Kontroluje, či reťazec pozostáva len z nepodstatných znakov, teda či je prázdny.

Príklad 15. Skontrolujte, či je reťazec pozostávajúci z troch medzier prázdny.

Empty = EmptyString(" "); Report(Empty);

Výsledkom vykonania tohto kódu bude zobrazenie slova „Áno“ (reťazcový výraz logickej hodnoty Pravda).

PageReplace

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Vyhľadá všetky výskyty hľadaného podreťazca v zdrojovom reťazci a nahradí ho náhradným podreťazcom.

Príklad 16. V riadku „Ahoj Svet!“ nahradiť slovo „mier“ slovom „priatelia“.

String = StrReplace("Ahoj svet!", "Svet", "Priatelia"); Report(String);

Výsledkom vykonania tohto kódu bude zobrazenie riadku „Ahoj priatelia!“

StrNumberLines

StrNumberRow(<Строка>) . Umožňuje vám spočítať počet riadkov vo viacriadkovom reťazci. Ísť do Nový riadok v 1s 8 sa používa symbol PS(znak nového riadku).

Príklad 17. Určte počet riadkov v texte:
"Prvá línia
Druhý riadok
Tretí riadok"

Číslo = StrNumberString("Prvý riadok"+Znaky.PS +"Druhý riadok"+Symboly.PS +"Tretí riadok"); Správa (číslo);

Výsledkom vykonania tohto kódu bude zobrazenie počtu riadkov v texte: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Získa riadok vo viacriadkovom reťazci podľa jeho čísla. Číslovanie riadkov začína od 1.

Príklad 18. Získajte posledný riadok v texte:
"Prvá línia
Druhý riadok
Tretí riadok"

Text = "Prvý riadok" + Symboly. PS + "Druhý riadok" + Symboly. PS + "Tretí riadok"; LastRow = StrGetRow(Text, StrNumberLines(Text)); Správa (Posledný riadok);

Výsledkom vykonania tohto kódu bude zobrazenie riadku „Tretí riadok“.

PageNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Vráti počet výskytov zadaného podreťazca v reťazci. Funkcia rozlišuje malé a veľké písmená.

Príklad 19. Určite, koľkokrát sa písmeno „c“ objaví v riadku „Riadky v 1s 8.3 a 8.2“, bez ohľadu na veľkosť písmen.

Riadok = "Riadky v 1 s 8,3 a 8,2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "C"); Report(NumberOccurrences);

Výsledkom vykonania tohto kódu bude zobrazenie počtu výskytov: 2.

PageStartsWith

StrStartsWith(<Строка>, <СтрокаПоиска>) . Skontroluje, či reťazec odovzdaný v prvom parametri začína reťazcom v druhom parametri.

Príklad 20. Určte, či DIČ vybranej protistrany začína číslom 1. Nechajte premennú Protistrana protistrany.

DIČ = Counterparty.TIN; StartsUNits = StrStartsWith(TIN, "1"); If Začína jednotkami Then //Váš kód EndIf;

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . Skontroluje, či reťazec odovzdaný v prvom parametri končí reťazcom v druhom parametri.

Príklad 21. Určte, či DIČ vybranej protistrany končí číslom 2. Nech v premennej Protistrana je uložený odkaz na prvok adresára protistrany.

DIČ = Counterparty.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Váš kód EndIf;

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Rozdelí reťazec na časti pomocou zadaných oddeľovacích znakov a výsledné reťazce zapíše do poľa. Prvý parameter ukladá zdrojový reťazec, druhý obsahuje reťazec obsahujúci oddeľovač a tretí udáva, či sa majú do poľa zapisovať prázdne reťazce (štandardne Pravda).

Príklad 22. Majme reťazec obsahujúci čísla oddelené symbolom „;“, získajme z reťazca pole čísel.

Reťazec = "1; 2; 3"; Pole = StrDivide(String, ";"); For Count = 0 By Array.Quantity() - 1 Cyklus pokusov Array[Count] = Number(AbbrLP(Array[Count])); Pole výnimiek[Sch] = 0; EndAttemptsEndCycle;

V dôsledku vykonania sa získa pole s číslami od 1 do 3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Skonvertuje pole reťazcov z prvého parametra na reťazec obsahujúci všetky prvky poľa oddelené oddeľovačom špecifikovaným v druhom parametri.

Príklad 23. Pomocou poľa čísel z predchádzajúceho príkladu získajte pôvodný reťazec.

Pre účet = 0 Podľa Array.Quantity() - 1 cyklus Array[Act] = String(Array[Act]); EndCycle; Riadok = StrConnect(Pole, "; ");