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

String je jedan od primitivnih tipova podataka u 1C:Enterprise 8 sistemima linija sadrže tekst.

Unesite vrijednosti varijabli linija nalaze se u dvostrukim navodnicima. Može se dodati nekoliko varijabli ovog tipa.

Per1 = "Riječ 1" ;
Per2 = "Riječ 2" ;
Per3 = Per1 + " " + Per2;

Na kraju Per3će značiti " Riječ 1 Riječ 2″.

Pored toga, sistemi 1C:Enterprise 8 pružaju funkcije za rad sa stringovima. Pogledajmo glavne:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funkcija je dizajnirana da prikaže dijaloški okvir u kojem korisnik može odrediti vrijednost varijable tipa Linija. Parametar <Строка> je obavezan i sadrži ime varijable u koju će uneti niz biti upisan. Parametar <Подсказка> opciono - ovo je naslov dijaloškog okvira. Parametar <Длина> opciono, pokazuje maksimalnu dužinu ulaznog niza. Zadana vrijednost je nula, što znači neograničenu dužinu. Parametar <Многострочность> opciono. Definira višeredni način unosa teksta: Tačno—unos višerednog teksta sa separatorima redova; False - unesite jednostavan niz.

Možete unijeti niz ako znate kod znakova u Unicodeu:

simbol(<КодСимвола>) — kod se unosi kao broj.

Slovo= Simbol (1103) ; // I

Postoji i inverzna funkcija koja vam omogućava da saznate kod simbola.

SymbolCode(<Строка>, <НомерСимвола>) — vraća Unicode broj navedenog znaka kao broj.

Funkcije konverzije velikih i malih slova:

VReg(<Строка>) — Pretvara sve znakove u nizu u velika slova.

NReg(<Строка>) — Pretvara sve znakove u nizu u mala slova.

TReg(<Строка>) — pretvara sve znakove u nizu u velika slova. Odnosno, prva slova u svim riječima se pretvaraju u velika, a preostala slova u mala.

Funkcije za traženje i zamjenu znakova u nizu:

Pronađi(<Строка>, <ПодстрокаПоиска>) — pronalazi broj karaktera pojavljivanja podniza pretraživanja. Na primjer:

Find ("String" , "oka" ) ; // 4

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — pronalazi broj karaktera pojavljivanja podniza pretraživanja, broj pojavljivanja je naznačen u odgovarajućem parametru. U ovom slučaju, pretraga počinje sa znakom čiji je broj naveden u parametru InitialPosition. Pretraživanje je moguće od početka ili kraja niza. Na primjer:

Broj4 pojavljivanja = Str Find ( "odbrana", "o" ,Smjer pretraživanja. Od početka, 1, 4); // 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – pronalazi sva pojavljivanja podniza za pretraživanje u izvornom nizu i zamjenjuje ga zamjenskim podnizom.

StrReplace ("String" , "oka" , "" ) ; // Stranica

Prazan red (<Строка>) – provjerava niz značajnih znakova. Ako nema značajnih znakova ili uopšte nema znakova, tada se vraća vrijednost Istinito. inače - Lazi.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – Izračunava broj pojavljivanja podniza pretraživanja u izvornom nizu.

StrNumberOccurrences ( "Uči, uči i uči ponovo", "prouči" , "" ) ; // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — zamjenjuje parametre u string brojem. Red mora sadržavati zamjenske markere u obliku: “%1..%N”. Numeracija markera počinje od 1. Ako je vrijednost parametra Nedefinisano, prazan niz je zamijenjen.

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

Funkcije konverzije nizova:

lav (<Строка>, <ЧислоСимволов>) – vraća prve znakove niza.

tačno (<Строка>, <ЧислоСимволов>) – vraća posljednje znakove niza.

srijeda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – vraća niz dužine<ЧислоСимволов>, počevši od simbola<НачальныйНомер>.

AbbrL(<Строка>) skraćuje nebitne znakove lijevo od prvog značajnog znaka u nizu.

skraćeno(<Строка>) — odsijeca beznačajne znakove desno od posljednjeg značajnog znaka u retku.

AbbrLP(<Строка>) – odsijeca beznačajne znakove lijevo od prvog značajnog znaka u retku i desno od posljednjeg značajnog znaka u retku.

StrGetString(<Строка>, <НомерСтроки>) – Dobiva višeredni niz po broju.

Ostale karakteristike:

Snaga(<Строка>) – vraća broj znakova u nizu.

StrNumberRow(<Строка>) – vraća broj redova u višelinijskom nizu. Red se smatra novim ako je od prethodnog odvojen znakom za novi red.

StrCompare(<Строка1>, <Строка2> ) – uspoređuje dva niza na način bez obzira na velika i mala slova. Funkcija radi kao objekat Poređenje vrijednosti. Povratak:

  • 1 - ako je prvi red veći od drugog
  • -1 - ako je drugi red veći od prvog
  • 0 - ako su stringovi jednaki

StrCompare("Prvi red" , "Drugi red" ) ; // 1

Redovi u 1C 8.3 u ugrađenom jeziku 1C predstavljaju vrijednosti primitivnog tipa Linija. Vrijednosti ovog tipa sadrže Unicode niz proizvoljne dužine. Varijable tipa string su skup znakova zatvorenih u navodnike.

Primjer 1. Kreirajmo varijablu niza sa tekstom.

StringVariable = "Zdravo svijete!";

Funkcije za rad sa stringovima u 1s 8.3

Ovaj odjeljak će pružiti glavne funkcije koje vam omogućavaju da mijenjate linije u 1c ili analizirate informacije sadržane u njima.

StrLength

Snaga(<Строка>) . Vraća broj znakova sadržanih u nizu koji je proslijeđen kao parametar.

Primjer 2. Izbrojimo broj znakova u retku “Zdravo svijete!”

String = "Zdravo svijete!"; Broj znakova = StrLength(String); Izvještaj (broj znakova);

Rezultat izvršavanja ovog koda će biti prikaz broja znakova u redu: 11.

AbbrL

AbbrL(<Строка>) . Sječe znakove koji nisu značajni lijevo od prvog značajnog znaka u nizu.
Manji likovi:

  • prostor;
  • neprekidni prostor;
  • tabela;
  • povrat kočije;
  • prijevod redaka;
  • prevod obrasca (stranica).

Primjer 3. Uklonite sve razmake s lijeve strane linije "svijet!" i dodajte mu red "Zdravo".

String = Skraćenica("svijet!"); String = "Zdravo"+String; Izvještaj(String);

Rezultat izvršavanja ovog koda će biti prikaz reda „Zdravo, svijete“ na ekranu.

Skraćeno

skraćeno(<Строка>) . Sječe nebitne znakove desno od prvog značajnog znaka u nizu.

Primjer 4. Formirajte iz redova “Zdravo” i “mir!” fraza "Zdravo svijete!"

Linija = Skraćenica("Zdravo ")+" "+ Skraćenica(" svijet!"); Izvještaj(String);

AbbrLP

AbbrLP(<Строка>) . Sječe znakove koji nisu značajni desno od prvog značajnog znaka u nizu, a također skraćuje nebitne znakove lijevo od prvog značajnog znaka u nizu. Ova funkcija se koristi češće od prethodne dvije, jer je univerzalnija.

Primer 5. Uklonite beznačajne znakove sa leve i desne strane u nazivu druge strane.

Counterparty = Imenici. Pronađi po detaljima("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

lav

lav (<Строка>, <ЧислоСимволов>) . Dobiva prve znakove niza, broj znakova je naveden u parametru Broj znakova.

Primjer 6. Neka u strukturi Zaposleni sadrži ime, prezime i prezime zaposlenog. Nabavite niz s prezimenom i inicijalima.

ImeInicijal = Lev(ime zaposlenog, 1); Patronim Inicijal = Lav(Zaposleni. Patronim, 1); Puno ime = Employee.Prezime + " " + Početno ime + "." + Srednje inicijal + ".";

U redu

tačno (<Строка>, <ЧислоСимволов>) . Dobiva posljednje znakove niza, broj znakova specificiranih u parametru Broj znakova. Ako navedeni broj znakova premašuje dužinu niza, onda se vraća cijeli niz.

Primjer 7. Neka datum u formatu “ggggmmdd” bude napisan na kraju string varijable, dobijete string sa datumom i pretvorite ga u tip datum.

String = "Trenutni datum: 20170910"; StringDate = Prava(String, 8); Datum = Datum(StringDate);

srijeda

srijeda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Dobiva podniz iz niza koji je proslijeđen kao parametar Linija, počevši od znaka čiji je broj naveden u parametru InitialNumber i dužina predata u parametar Broj znakova. Numeracija znakova u retku počinje od 1. Ako je u parametru InitialNumber specificirana je vrijednost manja ili jednaka nuli, tada parametar uzima vrijednost 1. Ako je parametar Broj znakova nije navedeno, tada se biraju znakovi do kraja reda.

Primer 8. Neka string varijabla počevši od devete pozicije sadrži kod regiona, trebalo bi da ga dobijete i upišete u poseban red.

String = "Regija: 99 Moskva"; Region = Prosjek (niz, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Traži određeni podniz u nizu, vraćajući broj pozicije prvog znaka pronađenog podniza. Pogledajmo parametre ove funkcije:

  • Linija. Izvorni niz;
  • Pretraži podniz. Search substring;
  • Smjer pretraživanja. Određuje smjer traženja podniza u nizu. Može uzeti vrijednosti:
    • Smjer pretraživanja.Od početka;
    • Search.End Direction;
  • InitialPosition. Određuje poziciju u nizu na kojoj pretraga počinje;
  • NumberOccurrences. Određuje broj pojavljivanja traženog podniza u izvornom nizu.

Primjer 9. U redu “Zdravo svijete!” Odredite poziciju posljednjeg pojavljivanja znaka "i".

PositionNumber = StrFind("Hello world!", "and", SearchDirection.End); Izvještaj (broj pozicije);

Rezultat izvršavanja ovog koda će biti prikaz broja posljednjeg pojavljivanja simbola “i”: 9.

VReg

VReg(<Строка>) . Pretvara sve znakove u navedenom nizu u 1s8 u velika slova.

Primjer 10: Konvertirajte string "zdravo svijete!" na velika slova.

StringVreg = VReg("zdravo svijet!"); Izvještaj(StringVreg);

Rezultat izvršavanja ovog koda će biti prikaz reda „ZDRAVO SVIJETE!“

NReg

NReg(<Строка>) . Pretvara sve znakove u navedenom nizu u 1s8 u mala slova.

Primjer 11: Konvertirajte string "HELLO WORLD!" na mala slova.

StringNreg = NReg("HELLO WORLD!"); Izvještaj(StringVreg);

Rezultat izvršavanja ovog koda će biti prikaz reda "zdravo svijete!"

Treg

TReg(<Строка>) . Konvertuje string na sledeći način: prvi znak svake reči se konvertuje u velika slova, a preostali znakovi reči se pretvaraju u mala slova.

Primjer 12: Napišite velika slova riječi u redu "zdravo svijete!"

StringTreg = TReg("zdravo svijet!"); Izvještaj(StringTreg);

Rezultat izvršavanja ovog koda će biti prikaz reda „Hello World!“

Simbol

simbol(<КодСимвола>) . Dobiva znak pomoću svog Unicode koda.

Primjer 13. Dodajte lijevo i desno u red “Hello World!” simbol ★

StringWithStars = Symbol("9733")+"Hello World!"+Symbol("9733"); Izvještaj(StringWithStars);

Rezultat izvršavanja ovog koda će biti prikaz linije “★Hello World!★”

Šifra simbola

SymbolCode(<Строка>, <НомерСимвола>) . Dobiva Unicode karakterni kod iz niza specificiranog u prvom parametru, koji se nalazi na poziciji navedenoj u drugom parametru.

Primjer 14. Saznajte šifru posljednjeg znaka u redu “Hello World!”

String = "Hello World!"; CharacterCode = CharacterCode(String, StrLength(String)); Obavijesti (CharacterCode);

Rezultat izvršavanja ovog koda bit će prikaz koda simbola “!” - 33.

Prazna linija

Prazan red (<Строка>) . Provjerava da li se string sastoji samo od beznačajnih znakova, odnosno da li je prazan.

Primjer 15. Provjerite da li je niz koji se sastoji od tri razmaka prazan.

Empty = EmptyString(" "); Izvještaj (prazan);

Rezultat izvršavanja ovog koda će biti prikaz riječi „Da“ (izraz niza logičke vrijednosti Istinito).

PageReplace

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Pronalazi sva pojavljivanja podniza za pretraživanje u izvornom nizu i zamjenjuje ga zamjenskim podnizom.

Primjer 16. U retku “Zdravo svijete!” zamijenite riječ “Mir” riječju “Prijatelji”.

String = StrReplace("Hello World!", "World", "Friends"); Izvještaj(String);

Rezultat izvršavanja ovog koda će biti prikaz reda „Zdravo prijatelji!“

StrNumberLines

StrNumberRow(<Строка>) . Omogućava vam da prebrojite broj redova u višelinijskom nizu. Da biste prešli na novi red za 1s 8, koristite simbol PS(znak za novi red).

Primjer 17. Odredite broj redova u tekstu:
"Prva linija
Druga linija
Treća linija"

Broj = StrNumberString("Prvi red"+Znakovi.PS +"Drugi red"+Simboli.PS +"Treći red"); Izvještaj (broj);

Rezultat izvršavanja ovog koda će biti prikaz broja redova u tekstu: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Dobiva red u višelinijskom nizu po broju. Numerisanje redova počinje od 1.

Primjer 18. Dobijte zadnji red u tekstu:
"Prva linija
Druga linija
Treća linija"

Tekst = "Prvi red" + PS + "Drugi red" + PS + "Treći red". LastRow = StrGetRow(Tekst, StrBroj linija(Tekst)); Izvještaj (posljednja linija);

Rezultat izvršavanja ovog koda će biti prikaz linije “Third Line”.

PageNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Vraća broj pojavljivanja navedenog podniza u nizu. Funkcija je osjetljiva na velika i mala slova.

Primjer 19. Odredite koliko se puta slovo “c” pojavljuje u redu “Linije u 1s 8.3 i 8.2”, bez obzira na veliko i malo.

Linija = "Linije u 1s 8.3 i 8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "Sa"); Izvještaj (broj pojavljivanja);

Rezultat izvršavanja ovog koda će biti prikaz broja pojavljivanja: 2.

PageStartsWith

StrStartsWith(<Строка>, <СтрокаПоиска>) . Provjerava da li niz proslijeđen u prvom parametru počinje nizom u drugom parametru.

Primjer 20. Odredite da li PIB odabrane druge ugovorne strane počinje brojem 1. Upišite varijablu Counterparty Counterparties.

TIN = Counterparty.TIN; StartsUNits = StrStartsWith(TIN, "1"); Ako počinje s jedinicama Then //Vaš kod EndIf;

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . Provjerava da li se niz proslijeđen u prvom parametru završava nizom u drugom parametru.

Primjer 21. Odredite da li se PIB odabrane druge ugovorne strane završava brojem 2. Upišite varijablu Counterparty pohranjuje se referenca na element direktorija Counterparties.

TIN = Counterparty.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Vaš kod EndIf;

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Razdvaja string na dijelove koristeći specificirane znakove za razdvajanje i upisuje rezultirajuće nizove u niz. Prvi parametar pohranjuje izvorni niz, drugi sadrži niz koji sadrži separator, treći pokazuje da li prazne nizove treba upisati u niz (podrazumevano Istinito).

Primjer 22. Neka imamo niz koji sadrži brojeve odvojene simbolom “;”, dobijemo niz brojeva iz niza.

String = "1; 2; 3"; Niz = StrDivide(String, ";"); Za Count = 0 Po Array.Quantity() - 1 Ciklus pokušaj Niz[Broj] = Broj(Abbr(Niz[Broj])); Niz izuzetaka[Sch] = 0; EndAttemptsEndCycle;

Kao rezultat izvršenja, dobiće se niz s brojevima od 1 do 3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Pretvara niz nizova iz prvog parametra u niz koji sadrži sve elemente niza razdvojene graničnikom navedenim u drugom parametru.

Primjer 23. Koristeći niz brojeva iz prethodnog primjera, dobiti originalni niz.

Za račun = 0 Po Array.Quantity() - 1 Ciklus Niz[Akt] = String(Niz[Akt]); EndCycle; Red = StrConnect(Niz, ";");

Implementirano u verziji 8.3.6.1977.

Proširili smo skup funkcija dizajniranih za rad sa stringovima. Ovo smo uradili 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 određenim podnizom ili da li niz završava navedenim podnizom. Algoritam za ove funkcije nije teško implementirati u ugrađenom jeziku, 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 separator 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.

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 proračuna funkcije ima tip stringa varijabilne 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 moramo biti sigurni 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 šablona 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.

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 stringova 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 prikaz stringova se 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 će biti uklonjeni sa obe strane"
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 "troco"

StrLength

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 kada se upoređuju i pretvaraju niz 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 - "GENERALNI 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 znak 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 niz 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.

“Line 1″ + “Line 2″ //rezultat dodavanja dva reda će biti “Line 1 Line 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đer č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 žica 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" // vraća False

mob_info