1s 8 kao niz operacija. Nove funkcije za rad sa stringovima

DIO 1. METODE (26).

1.1. Osnovne metode (10). Nezavisni, izgrađeni na vlastitim jednostavnim algoritmima.

Page_Add() (desno-lijevo dodavanje sa specificiranim znakovima).

Page_Inverse () (inverzija - znakovi s desna na lijevo).

Page_Codes() (kodovi znakova kroz "”," i niz sa kodovima)

Page_Characters() (niz kodova odvojenih sa ""," ili iz niza sa kodovima)

Page_ReplaceSymbols() (zamjena nekih znakova drugima).

String_FromArray() (niz iz niza fragmenata odvojenih separatorom)

Page_FindIn() (traži podniz (uključujući i onu na desnoj strani) sa određenim brojem pojavljivanja).

Page_FindGr() (Traži grupu znakova uključenih u navedeni skup znakova)

Page_FindNumber() (Tražite broj, uključujući na desnoj strani sa navedenim brojem pojavljivanja)

Page_Interpret() (u niz, prema utvrđenoj sintaksi)

1.2. Derivatne metode (12). Zapravo, ovo je korištenje četiri generalizirane algoritamske metode (vidi 2. dio)

Page_Number() (od početka i od kraja reda, nemojte se „plašiti“ nenumeričkih znakova.

Page_Find() (traži podniz (uključujući neosjetljivost velikih i malih slova i desno) sa specificiranim brojem pojavljivanja).

Page_Replace() (pretraga (uključujući neosjetljivost na velika i mala slova i desnoruke) i zamjena podnizova razgraničenja).

Str_Piece() (komad niza između navedenih pojavljivanja graničnika (lijevo ili desno)).

Page_ReplacePiece() (zamjenjuje “komad” u izvornom nizu sa navedenim stringom).

Page_VARray() (između navedenih pojavljivanja separatora (uključujući i one na desnoj strani i bez velikih i malih slova).

Page_TransferBySyllables() (podijeljen na podnizove “Hardly”, sa crticom).

Page_TransferByWords() (podijeljeno na podnizove "meko")

Page_Cut() („Isjeći“ na podnizove određene dužine)

Str_Shorten() (lijevu grupu "skraćenih" znakova zamijenite "zamjenskim nizom"

Page_Abbreviation() (zamijenite desnu grupu "smanjenih" znakova sa "zamjenskim nizom"

Str_ShortenS() (zamijenite u sredini grupe "skraćenih" znakova sa "zamjenskim nizom"

Page_Extend (proširenje na određenu dužinu povećanjem broja specificiranih znakova)

1.3. Detaljne metode (3). "Seciranje" reda sa prelaskom na tabelu sa detaljnim informacijama.

Page_vTableIn() (u tabelu prema sistemu ugniježđenih graničnika).

Page_vTableGr (u tablicu prema višerazinskom filteru).

Page_inTableNumbers (u tabeli sa brojevima i fragmentima između njih).

DIO 2. GENERALIZOVANE METODE-ALGORIMI (3).

Page_Occurrence() (metode “Pronađi” i “Zamijeni”).

Page_Fragments() (metode “Piece”,”ReplacePiece”,”InArray”,”inTableIn”).

Page_Abcr() (metode "AbcrL", "AbcrP", "AbcrS", "Proširi".

Page_Split() (metode “Premještanje po slogovima”, “Premještanje po riječima”, “Izrezivanje”).

DIO 3. UNIVERZALNA FUNKCIJA.

Ovo je vrsta uslovnog programskog interfejsa koji dozvoljava

primijeniti nekoliko metoda na niz odjednom. Implementirano kao

funkcije sa sedam parametara ("Demo" je izgrađen na ovoj funkciji):

Stranica_(Metode, Podmetode, Input, Param1, Param2, Length_Number_Position, Dodatni izlaz)

Opcije:

- "Metode" - nekoliko "kombinovanih" i (ili) jedna "ekskluzivna" metoda

(jednoslovni kodovi ili imena, moguće preko ",")

- "Podmetode" - nekoliko "kombiniranih" i (ili) "ekskluzivnih" opcija

“ekskluzivni” metod (jednoslovni kodovi ili imena);

- “Input” - String, ili Niz ili Tabela vrijednosti;

- “Param1” - niz za pretraživanje, zamjene, separatori, filteri;

- “Param2” - zamjenski niz ili znakovi;

- “Length_Number_Position” -Broj, brojevi kroz separator ili niz sa brojevima;

- “Dodatni izlaz” – broj ili niz ili niz ili tabela vrijednosti;

Nazivi i/ili jednoznakovni kodovi podmetoda, kao i brojevi u

(Length_Number_Position) može biti u svakom slučaju i odvojeno

bilo koji od sljedećih graničnika: “”, :;”.

DIO 4. NEKI PRIMJERI.

There areNumbersInLine=(Str_FindNumber(InLine)<>Undefined);

Postoje brojevi u liniji = (String_FindGr(Inline,"+0123456789")>0);

Postoji latinica = (Str_FindGr(InStr, Str_Interpret("lL"))>0);

Postoje specificirani znaci = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

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

DIO 5. ZAKLJUČAK.

Gdje je bilo moguće, zadovoljio sam se jednim prolazom duž linije. Drugi prolaz je obično u fragmentima. Nisam koristio ugrađenu funkciju StrNumberOccurrences().

Korištene su ugrađene funkcije: Lijevo(), Desno(), Srednje(), StrLength()

- (pozicioniranje i preuzimanje dijela linije mora biti “brzo”).

Osnovne mogućnosti programskog jezika obično uključuju rad sa brojevima i nizovima. Obično su ove karakteristike tvrdo kodirane u kod kompajlera (ili se implementiraju „bazne“ klase programskog jezika).

U 1C, mogućnost rada sa stringovima je programirana u samoj platformi. Danas ćemo pogledati karakteristike rada sa 1C stringovima u programima na ugrađenom 1C jeziku.

Vrijednost linije 1C

1. Počnimo s najjednostavnijim. Kreiranje varijable i dodjeljivanje konstantne vrijednosti niza izgleda ovako u 1C:

Variable = "Zdravo, svijet!";

Ako trebate navesti znak navodnika u konstantnoj vrijednosti stringa 1C, morate ga udvostručiti ""

Varijabla = "Zdravo, svijete"!;

2. Prijelom reda 1C može se specificirati na dva načina odjednom. Prvi je korištenje simbola |

Variable = "Zdravo,
| svijet! ";

Drugi je korištenje sistemske numeracije Symbols. Omogućava vam da dodate i 1C prijelome reda i druge znakove koji se ne štampaju, kao što je TAB.

Varijabla = "Zdravo" + Simboli.PS + "mir!";

3. Konfiguracije u 1C mogu se razvijati ne samo za jedan jezik (ruski, engleski ili drugi) - već istovremeno za nekoliko jezika. U ovom slučaju, jezik koji se trenutno koristi se odabire na dnu prozora 1C.

Lista jezika se nalazi u prozoru za konfiguraciju u grani Općenito/Jezici. Svaki jezik ima kratak identifikator kao što je ru ili eng.

Jasno je da prilikom programiranja takve konfiguracije 1C linije mogu biti i višejezične. Da biste to učinili, moguće je kreirati takvu 1C liniju navođenjem kroz; opcije prema identifikatoru jezika:

Variable = "ru=""Zdravo, svijete! ""; en=""Zdravo, svijete! """;

Ako koristite liniju 1C formiranu na ovaj način kao i obično, to će biti ono što je napisano u njoj. Da bi ga sistem podijelio na dvije opcije i koristio željenu, potrebno je koristiti funkciju NStr():

//ispravan za dvojezične konfiguracije
Izvještaj(NStr(Varijabla));

Rekviziti sa linijom tipa 1C

Atribut je polje u 1C direktoriju/dokumentu. Razlikuje se od varijable u programu na 1C jeziku po tome što je za atribut precizno naznačen njen tip (broj, 1C niz, itd.). Ako trebate osvježiti sjećanje na to što je rekvizit, pogledajte lekciju dalje.

Ako navedete vrstu atributa - red 1C, tada morate dodatno navesti parametre.

1C linije dolaze u neograničenoj dužini (označeno kao dužina = 0) i ograničenoj dužini, što ukazuje na tačan broj znakova. 1C redovi neograničene dužine pohranjeni su u zasebnoj SQL tablici, tako da je njihova upotreba manje produktivna od ograničenih.

Zato upotreba 1C nizova neograničene dužine ima svoja ograničenja - nije ih moguće koristiti svuda. Na primjer, nije dozvoljeno kao broj dokumenta, referentni kod ili mjera.

Rad sa 1C žicama

Postoji nekoliko ugrađenih funkcija 1C platforme za rad sa stringovima.

  • AbbrLP (“Nevjerovatno, ali istinito!”)
    Uklanja dodatne razmake iz 1C linije. Može se koristiti i za pretvaranje bilo koje vrste u 1C string (na primjer, brojeve).
  • Varijabla = "Vasya" + AbbrLP(" plus") + "Olya"; // biće "Vasya plus Olya"
    Primjer zbrajanja nekoliko vrijednosti niza 1C. Rezultat će biti jedan red 1C.
  • Varijabla = Lev("Muzika", 2); //bit će "Mu"
    Varijabla = Medium("Muzika", 2, 2); //postat će "prijetnja"
    Varijabla = Prava("Muzika", 2); // biće "ka"
    Različite opcije za dobijanje podniza iz 1C niza.
  • Varijabla = Find("Muzika", "zy"); //biće 3
    Potražite podniz u nizu 1C, počevši od znaka 1.
  • Varijabla = StrLength("Muzika"); //biće 6
    Vraća broj znakova u liniji 1C.
  • Report("Hello") //u prozoru za poruke na dnu prozora 1C
    Alert("Hello") //popup dijalog
    Status("Zdravo") //u redu prikaza statusa u donjem lijevom kutu
    .

Dovođenje objekata na liniju 1C

Kao što znate, trenutno najpopularniji format za razmjenu strukturiranih informacija je XML. Čak i najnovija verzija MS Office Worda i Excela spremaju datoteke u ovom formatu (docx i xlsx, mijenjaju ekstenziju u zip, otvaraju u arhiveru).

1C platforma za razmjenu podataka nudi nekoliko opcija, od kojih je glavna također XML.

1. Najjednostavniji metod je korištenje funkcije Abbreviation() ili String(). Možete koristiti funkciju REPRESENTATION() u tijelu zahtjeva. Rezultat njihove akcije je isti - oni generiraju string reprezentaciju bilo kojeg 1C objekta za korisnika.

Za direktorij, to će po defaultu biti njegovo ime. Za dokument – ​​naziv dokumenta, broj i datum.

2. Bilo koji 1C objekt (sa ograničenjima) može se pretvoriti u XML i obrnuto. Proces konverzije se naziva serijalizacija.

StringViewXml = XMLString(Vrijednost); //dobijemo XML iz 1C vrijednosti
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //dobijamo 1C vrijednost iz XML stringa, morate navesti 1C tip koji treba primiti

3. Postoji vlastiti način 1C platforme za pretvaranje bilo kojeg 1C objekta u string. Migrirao je sa verzije 1C 7.7. Ovaj format ne razumiju drugi programi, ali ga drugi 1C razumiju, što ga čini lakim za razmjenu između 1C baza podataka.

Red = ValueInRowInt(Value1C); //dobijamo string 1C iz vrijednosti 1C
ValueVFile("C:\MyFile.txt", Value1C); //druga opcija, dobijamo datoteku sa sačuvanim nizom iz 1C vrijednosti
Value1C = ValueFromStringInt(String); //povratak sa linije 1C
Value1C = ValueFile("C:\MyFile.txt"); //povratak iz datoteke

Uređivanje 1C linija na obrascu

Pored rada sa 1C stringovima u programu na 1C jeziku, naravno da bih voleo da korisnik može da ih uređuje. Za to postoji nekoliko mogućnosti:

1. Najlakši način je zatražiti unos 1C linije na zahtjev. Ova metoda se koristi pri podučavanju 1C programiranja u životu se koristi mnogo rjeđe (ali se koristi!).

Varijabla = "";
Red = EnterValue(Variable, "Unesite puno ime");

2. Za prikaz detalja 1C objekta (direktorij/dokument) ili detalje obrasca (vidi), najčešće se koristi polje za unos. Ovo je najčešći alat u 1C za korisnika za rad s poljima za uređivanje.

3. Mogućnosti polja za unos se mogu proširiti (pogledajte svojstva polja za unos, desni klik na njega, više detalja):

  • Polje za potvrdu Višelinijski način uređivanja
  • Potvrdni okvir za napredno uređivanje (dostupno ako je prethodno potvrđen okvir za potvrdu)
  • Potvrdni okvir Režim lozinke (vidi).

4. Ako vam sve mogućnosti polja za unos nisu dovoljne, postoji ugrađeni uređivač. Da biste ga dodali u obrazac, potrebno je da dodate polje tekstualnog dokumenta u meni Kontrola obrasca/umetanja. U njegovim svojstvima možete odrediti njegov način rada – svojstvo Extension.

Polje tekstualnog dokumenta ne može se direktno povezati s podacima. Potrebno je napisati funkciju u OnOpen() rukovatelju događaja oblika (pogledajte):

Elementi obrasca.ElementNameTextDocumentField.SetText(StringValue); //ovdje ValueString je tekst primljen, na primjer, iz atributa

I u rukovatelju spremanja - na primjer, u dugme Sačuvaj - dodajte spremanje:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueLinija ovdje je atribut u koji pohranjujemo vrijednost

5. U 1C verziji 8.2.11, u upravljanim obrascima, pojavila se nova opcija za predstavljanje 1C linije - polje Formatirani dokument.


Slično kao i polje tekstualnog dokumenta, morate ga postaviti prilikom otvaranja i zapisati kada ga sami pohranjujete pomoću programa.

  • U 1C objekt čiju formu kreiramo (direktorij, dokument, obrada itd.) - dodajte atribut sa tipom Value Storage
  • U funkciji OnReadOnServer() postavljamo tekst iz atributa

    //ovdje je atribut dodani atribut 1C objekta
    //ovdje FormattedDocument je naziv polja na obrascu za uređivanje
    &Na serveru

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProcedure

  • U funkciji BeforeWritingOnServer() ili pomoću dugmeta upisaćemo tekst iz polja

    &Na serveru
    Procedura prilikom čitanja na serveru (trenutni objekt)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    EndProcedure

String tip se nalazi u svim programskim jezicima. Primitivan je, a u 1C postoji mnogo funkcija za rad s njim. U ovom članku ćemo detaljno razmotriti različite načine rada sa tipovima nizova u 1C 8.3 i 8.2 koristeći primjere.

Linija

Da bi se varijabla bilo koje vrste pretvorila u string, postoji funkcija istog imena “String()”. Ulazni parametar će biti sama varijabla, čiji se nizovski prikaz mora dobiti.

String(False) // vraća "Ne"
String(12345) // vraća "12,345"
String(CurrentDate()) //"07/21/2017 11:55:36″

Moguće je pretvoriti ne samo primitivne tipove u string, već i druge, na primjer, elemente direktorija i dokumenata.

SokrLP, SokrL, SokrP

Ulazni parametri ovih funkcija su varijabla tipa string. Funkcije uklanjaju beznačajne znakove (razmake, povratne znakove itd.): s lijeve i desne strane, samo s lijeve strane i samo s desne strane.

Skraćenica(" Razmaci će biti uklonjeni sa obe strane ") // "Razmaci sa obe strane će biti uklonjeni"
Skraćenica(" Razmaci na obje strane će biti uklonjeni ") // " Razmaci s lijeve strane će biti uklonjeni "
Skraćenica(" Razmaci sa obe strane će biti uklonjeni ") // " Razmaci sa desne strane će biti uklonjeni"

Leo, desno, srednje

Ove funkcije vam omogućavaju da skratite dio niza. Funkcija "Left()" će vratiti dio stringa sa njegove lijeve strane određene dužine. Funkcija "Right()" je slična, ali se izrezuje s desne strane. Funkcija “Avg()” vam omogućava da odredite broj karaktera iz kojeg će biti odabrana linija i njegovu dužinu.

Lev("String varijabla", 4) // vraća "Str"
Right("String varijabla", 7) // vraća "varijabla"
Medium("String varijabla", 2, 5) // vraća "troko"

Snaga

Funkcija određuje broj znakova koji su sadržani u varijabli stringa.

StrLength("Word") // rezultat izvršenja će biti broj 5

Nađi

Funkcija omogućava traženje dijela stringa u varijabli stringa. Povratna vrijednost će biti broj koji pokazuje poziciju početka pronađenog niza. Ako nije pronađeno podudaranje, vraća se nula.

Imajte na umu da je pretraga osjetljiva na velika i mala slova. Ako postoji više od jednog pojavljivanja podniza pretraživanja u originalnom nizu, funkcija će vratiti početak prvog pojavljivanja.

Find("jedan, dva, jedan, dva, tri", "dva") // funkcija će vratiti broj 6

Prazna linija

Korištenje ove funkcije vam omogućava da odredite da li je niz prazan. Manji znakovi kao što su razmak, povratak kočije i drugi se ne uzimaju u obzir.

EmptyString("Pupkin Vasily Ivanovich") // funkcija će vratiti vrijednost False
EmptyString(" ") // funkcija će vratiti vrijednost True

VReg, NReg, TReg

Ove funkcije su vrlo korisne prilikom poređenja i konvertiranja string varijabli. "Vreg()" će vratiti originalni niz velikim slovima, "HPreg()" malim slovima, a "TReg()" će ga formatirati tako da prvi znak svake pojedinačne riječi bude napisan velikim slovima, a svi sljedeći znakovi.

VReg("GENERAL DIREKTOR") // povratna vrijednost - "CEO DIREKTOR"
NReg(“CEO DIRECTOR”) // povratna vrijednost – “CEO”
TREG(“CEO DIREKTOR”) // povratna vrijednost – “Generalni direktor”

PageReplace

Ova funkcija je analogna zamjeni u uređivačima teksta. Omogućava vam da zamijenite jedan karakter ili skup znakova drugim u string varijablama.

StrReplace("crveno, bijelo, žuto", ","", ";") // vraća "crveno; bijela; žuto"

StrNumberLines

Funkcija vam omogućava da odredite broj redova razdvojenih povratnim znakovima u tekstualnoj varijabli.

Petlja u primjeru ispod će proći kroz tri kruga jer će funkcija LineNumberRow vratiti vrijednost 3:

Za ind = 1 po StrBroj nizova ("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") Ciklus
<тело цикла>
EndCycle;

StrGetString

Ova funkcija radi s višerednim tekstom na isti način kao i prethodna. Omogućava vam da dobijete određeni string iz tekstualne varijable.

StrGetString("String1" + Characters.PS + "String2" + Characters.PS + "String3", 2) // vrati "String2"

PageNumberOccurrences

Funkcija broji broj pojavljivanja znaka ili podniza u nizu za pretraživanje.

StrNumberAttachments("a;b;c;d; ", ";") // funkcija će vratiti broj 4

Simbol i kod simbola

Ove funkcije vam omogućavaju da dobijete znak po njegovom kodu u Unicode kodiranju, kao i da odredite ovaj kod po samom znaku.

SymbolCode("A") // funkcija će vratiti broj 1,040
CharacterCode(1040) // funkcija će vratiti “A”

Uobičajeni zadaci pri radu sa stringovima

Povezivanje nizova

Za kombinovanje nekoliko nizova (za izvođenje konkatenacije) dovoljno je koristiti operator sabiranja.

„Linija 1″ + „Linija 2″ //rezultat dodavanja dva reda će biti „Linija 1 Linija 2”

Type Conversion

Da bi se tip pretvorio u string, na primjer, link na element direktorija, broj itd., dovoljno je koristiti funkciju “String()”. Funkcije kao što je “ScrLP()” će takođe konvertovati varijable u string, ali odmah sa odsecanjem beznačajnih znakova.

String(1000) // vraća "1.000"

Imajte na umu da kada konvertuje broj u niz, program automatski dodaje razmak koji razdvaja hiljadu. Da biste to izbjegli, možete koristiti sljedeće konstrukcije:

StrReplace(String(1000),Characters.NPP,"") // vraća "1000"

String(Format(1000,"HG=")) // vraća "1000"

Navodnici u nizu

Često ćete morati da se nosite sa potrebom da navedete navodnike u varijabli stringa. To može biti ili tekst zahtjeva napisan u konfiguratoru ili samo varijabla. Da biste riješili ovaj problem, trebate samo postaviti dva navodnika.

Header = String("Horns and Hooves LLC - to smo mi!") // će vratiti "Horns and Hooves LLC - to smo mi!"

Više redova, prijelom reda

Da biste kreirali višeredni tekst, samo mu dodajte prijelome reda (Symbols.PS).

MultilineText = “Prvi red” + Simboli.PS + “Drugi red”

Kako ukloniti razmake

Da biste uklonili razmake s desne ili lijeve strane, možete koristiti funkciju “ScrAP()” (kao i “ScrL()” i “ScrP()”):

StringNoSpaces = Skraćenica(" Mnogo slova ") // funkcija će vratiti vrijednost "Mnogo slova"

Ako, nakon pretvaranja broja u niz, trebate ukloniti razmake bez prekida, koristite sljedeću konstrukciju:

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // vraća "99999"

Programeri takođe često koriste sljedeću konstrukciju, koja vam omogućava da uklonite ili zamijenite drugim znakom sve razmake u tekstualnoj varijabli:

StringNoSpaces = StrReplace("zdravo","") // vraća "zdravo"

Poređenje struna međusobno

Možete uporediti pojmove sa uobičajenim znakom jednakosti. Poređenje je osjetljivo na velika i mala slova.

"Hello" = "hello" // vraća False
"Hello" = "Zdravo" // vraća True
"Hello" = "Zbogom" // će vratiti False

Postoji nekoliko mehanizama za rad sa stringovima u 1C upitima. Prvo, linije se mogu dodati. Drugo, možete uzeti podniz iz niza. Treće, nizovi se mogu porediti, uključujući i uzorak. To je vjerovatno sve što se može uraditi sa žicama.

Dodavanje niza

Da biste dodali redove u upit, koristi se operacija “+”. Možete dodati samo nizove ograničene dužine.

SELECT "Naziv: " + Naziv AS Kolona 1 IZ Imenika Counterparties GDJE Counterparties

Funkcija podniza

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

Analog funkcije Environment() iz objektnog modela. Funkcija Substring() može se primijeniti na nizove podataka i omogućava vam da odaberete fragment <Строки> , počevši od broja karaktera <НачальнаяПозиция> (znakovi u redu su numerisani počevši od 1) i dužina <Длина> karaktera. Rezultat izračunavanja funkcije ima tip stringa promjenjive dužine, a dužina će se smatrati neograničenom ako <Строка> ima neograničenu dužinu i parametar <Длина> nije konstanta ili veća od 1024.

Ako je dužina niza manja od navedene u drugom parametru, funkcija će vratiti prazan niz.

Pažnja! Ne preporučuje se korištenje funkcije SUBSTRING() za pretvaranje nizova neograničene dužine u nizove ograničene dužine. Umjesto toga, bolje je koristiti cast operator EXPRESS().

Funkcija Slična

Ako se trebamo uvjeriti da atribut stringa ispunjava određene kriterije, uspoređujemo ga:

ODABIR Counterparts AS Kolona 1 IZ Imenika Counterparties GDJE Counterparts.

Ali šta ako vam treba suptilnije poređenje? Ne samo jednakost ili nejednakost, već sličnost s određenim obrascem? Upravo za to je stvorena SLIČNA funkcija.

LIKE — Operator za provjeru sličnosti niza sa uzorkom. Analog LIKE-a u SQL-u.

Operator SIMILAR vam omogućava da uporedite vrijednost izraza navedenog lijevo od njega sa nizom uzorka koji je specificiran desno. Vrijednost izraza mora biti tipa string. Ako vrijednost izraza odgovara uzorku, rezultat operatora će biti TRUE, u suprotnom će biti FALSE.

Sljedeći znakovi u nizu uzorka su uslužni znakovi i imaju različito značenje od znakova niza:

  • % (postotak): niz koji sadrži bilo koji broj proizvoljnih znakova;
  • _ (podvlaka): jedan proizvoljan znak;
  • […] (jedan ili više znakova u uglastim zagradama): svaki pojedinačni znak naveden unutar uglastih zagrada. Nabrajanje može sadržavati opsege, na primjer a-z, što znači proizvoljan znak uključen u opseg, uključujući krajeve raspona;
  • [^...] (u uglastim zagradama znak negacije iza kojeg slijedi jedan ili više znakova): bilo koji pojedinačni znak osim onih navedenih iza znaka negacije.

Bilo koji drugi simbol znači sam po sebi i ne nosi nikakav dodatni teret. Ako jedan od navedenih znakova treba biti napisan kao sam, onda mu mora prethoditi<Спецсимвол>. Sebe<Спецсимвол>(bilo koji odgovarajući znak) je definiran u istoj izjavi nakon ključne riječi SPECIAL CHARACTER.

Implementirano u verziji 8.3.6.1977.

Proširili smo skup funkcija dizajniranih za rad sa stringovima. Ovo smo učinili kako bismo vam pružili naprednije alate za raščlanjivanje podataka niza. Nove funkcije će biti zgodne i korisne u tehnološkim zadacima analize teksta. U zadacima koji se odnose na raščlanjivanje teksta koji sadrži podatke u formatiranom obliku. To može biti analiza nekih datoteka primljenih od opreme ili, na primjer, analiza tehnološkog dnevnika.

Sve radnje koje izvode nove funkcije možete izvršiti prije. Korištenje manje ili više složenih algoritama napisanih na ugrađenom jeziku. Stoga vam nove funkcije ne daju nikakve suštinski nove mogućnosti. Međutim, oni vam omogućavaju da smanjite količinu koda i učinite kod jednostavnijim i razumljivijim. Osim toga, oni vam omogućavaju da ubrzate izvršenje radnji. Jer funkcije implementirane u platformi rade, naravno, brže od sličnog algoritma napisanog na ugrađenom jeziku.

Funkcija oblikovanja StrTemplate()

Ova funkcija zamjenjuje parametre u string. Potreba za takvom konverzijom često se javlja, na primjer, prilikom prikazivanja poruka upozorenja. Sintaksa za ovu funkciju je sljedeća:

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

<Шаблон>- ovo je niz u koji trebate zamijeniti reprezentacije parametara.

<Значение1> , ... <Значение10>- ovo su parametri (maksimalno deset), čije se reprezentacije moraju zamijeniti u nizu.

Da biste označili određeno mjesto u šablonu na kojem želite da izvršite zamjenu, trebate koristiti markere poput %1, ... %10. Broj markera uključenih u predložak i broj parametara koji sadrže vrijednosti moraju se podudarati.

Na primjer, rezultat izvršavanja takvog operatora:

bit će red:

Greška u podacima u redu 2 (potreban je tip datuma)

Funkcija za rad sa stringovima StrCompare()

Ova funkcija uspoređuje dva niza na način bez obzira na velika i mala slova. Na primjer, ovako:

Istu radnju možete izvesti ranije koristeći objekt Usporedba vrijednosti:

Međutim, korištenje nove funkcije izgleda lakše. Osim toga, funkcija, za razliku od objekta za usporedbu vrijednosti, radi i u tankom i u web klijentu.

Funkcije za rad sa stringovima StrStartsWith(), StrEndsAt()

Ove funkcije određuju da li string počinje navedenim podnizom ili da li niz završava navedenim podnizom. Algoritam za ove funkcije nije teško implementirati u ugrađeni jezik, ali njihovo prisustvo vam omogućava da pišete čistiji i razumljiviji kod. I rade brže.

Na primjer, zgodni su za korištenje u naredbi If:

Funkcije za rad sa stringovima StrDivide(), StrConnect()

Ove funkcije dijele niz na dijelove koristeći specificirani graničnik. Ili obrnuto, kombinuju nekoliko redova u jedan, ubacujući odabrani razdjelnik između njih. Pogodni su za kreiranje ili analizu dnevnika i tehnoloških časopisa. Na primjer, možete jednostavno raščlaniti unos tehnološkog dnevnika na dijelove pogodne za daljnju analizu:

Funkcija za rad sa stringovima StrFind()

Umjesto stare funkcije Find(), implementirali smo novu funkciju koja ima dodatne mogućnosti:

  • Traži u različitim smjerovima (od početka, od kraja);
  • Pretraga sa određene pozicije;
  • Potražite pojavljivanje sa određenim brojem (drugo, treće, itd.).

U stvari, duplira mogućnosti stare funkcije. Ovo se radi kako bi se održala kompatibilnost sa modulima kompajliranim u starijim verzijama. Preporučuje se da više ne koristite staru funkciju Find().

Ispod je primjer korištenja novih mogućnosti pretraživanja. Obrnuto pretraživanje je korisno kada vam je potreban posljednji fragment formaliziranog niza, kao što je puno ime datoteke u URL-u. A pretraživanje sa određene pozicije pomaže u slučajevima kada trebate pretraživati ​​u poznatom fragmentu, a ne u cijelom redu.