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