Zamijenite znakove u retku 1c. Nove funkcije za rad sa nizovima. Funkcija za rad sa stringovima StrFind()

25.10.2019 Vijesti

Redovi u 1C 8.3 u ugrađenom jeziku 1C predstavljaju vrijednosti primitivnog tipa Crta. Vrijednosti ove vrste sadrže Unicode niz proizvoljne duljine. Varijable tipa string skup su znakova u navodnicima.

Primjer 1. Kreirajmo string varijablu s tekstom.

StringVariable = "Zdravo svijete!";

Funkcije za rad sa stringovima u 1s 8.3

U ovaj odjeljak Bit će dane glavne funkcije koje vam omogućuju promjenu linija u 1c ili analizu podataka sadržanih u njima.

StrLength

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

Primjer 2. Izbrojimo broj znakova u retku “Hello world!”

String = "Zdravo svijete!"; BrojZnakova = StrLength(String); Izvješće (Brojevi znakova);

Rezultat izvršavanja ovog koda bit će prikaz broja znakova u retku: 11.

AbbrL

AbbrL(<Строка>) . Skraćuje nevažne znakove lijevo od prvog značajnog znaka u nizu.
Sporedni likovi:

  • prostor;
  • neprekinuti prostor;
  • tabeliranje;
  • povrat prtljage;
  • linijski prijevod;
  • prijevod obrasca (stranica).

Primjer 3. Uklonite sve razmake s lijeve strane retka "world!" i dodajte joj redak "Zdravo".

String = skraćenica("svijet!"); String = "Hello"+String; Izvješće (niz);

Rezultat izvršavanja ovog koda bit će prikaz retka "Hello world!" na ekranu.

Skraćeno

Skraćenica(<Строка>) . Skraćuje nevažne znakove s desne strane prvog značajnog znaka u nizu.

Primjer 4. Formirajte iz redaka "Hello" i "peace!" izraz "Zdravo svijete!"

Redak = Skraćenica("Zdravo ")+" "+ Skraćenica(" svijet!"); Izvješće (niz);

AbbrLP

AbbrLP(<Строка>) . Skraćuje beznačajne znakove s desne strane prvog značajnog znaka u nizu, a također izrezuje beznačajne znakove s lijeve strane prvog značajnog znaka u nizu. Ova funkcija koristi se češće od prethodna dva, jer je univerzalniji.

Primjer 5. Uklonite beznačajna slova lijevo i desno u nazivu druge ugovorne strane.

Suprotna strana = Direktoriji. Protustranake.Traži po pojedinostima("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

Lav

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

Primjer 6. Neka u strukturi Zaposlenik sadrže ime, prezime i patronim zaposlenika. Uzmite niz s prezimenom i inicijalima.

NameInitial = Lev(Employee.Name, 1); Inicijal patronimika = Leo(Zaposlenik. Patronimik, 1); Puno ime = Zaposlenik.Prezime + " " + Početno ime + "." + Srednje početno slovo + ".";

Pravo

Pravo(<Строка>, <ЧислоСимволов>) . Dobiva posljednje znakove niza, broj znakova navedenih u parametru Broj znakova. Ako navedeni broj znakova premašuje duljinu niza, vraća se cijeli niz.

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

Niz = " Trenutačni datum: 20170910"; StringDate = Prava(String, 8); Datum = Datum(StringDate);

srijeda

Srijeda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Dobiva podniz iz niza proslijeđenog kao parametar Crta, počevši od znaka čiji je broj naveden u parametru Početni broj a duljina prešla u parametar Broj znakova. Numeriranje znakova u retku počinje od 1. Ako je u parametru Početni broj navedena je vrijednost manja ili jednaka nuli, tada parametar ima vrijednost 1. Ako je parametar Broj znakova nije navedeno, tada se odabiru znakovi do kraja retka.

Primjer 8. Neka string varijabla počevši od devete pozicije sadrži kod regije, trebali biste ga dobiti i napisati u posebnom redu.

String = "Regija: 99 Moskva"; Regija = Prosj. (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:

  • Crta. Izvorni niz;
  • Traži podniz. Podniz za pretraživanje;
  • Smjer pretraživanja. Određuje smjer traženja podniza u nizu. Može uzeti vrijednosti:
    • Smjer pretraživanja. Od početka;
    • Search.End Direction;
  • Početni položaj. Određuje poziciju u nizu na kojoj počinje pretraga;
  • NumberOccurrences. Određuje broj pojavljivanja pretraženog podniza u izvornom nizu.

Primjer 9. U retku "Hello world!" Odredite mjesto posljednjeg pojavljivanja znaka "i".

PositionNumber = StrFind("Zdravo svijete!", "and", SearchDirection.End); Izvještaj(BrojPozicije);

Rezultat izvršavanja ovog koda bit će prikaz broja zadnjeg pojavljivanja simbola "i": 9.

VReg

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

Primjer 10: Pretvorite niz "hello world!" na velika slova.

StringVreg = VReg("zdravo svijete!"); Izvješće (StringVreg);

Rezultat izvršavanja ovog koda bit će prikaz retka "HELLO WORLD!"

NReg

NReg(<Строка>) . Pretvara sve znakove navedenog niza u 1s 8 u mala slova.

Primjer 11: Pretvorite niz "HELLO WORLD!" malim slovima.

StringNreg = NReg("ZDRAVO SVIJETE!"); Izvješće (StringVreg);

Rezultat izvršavanja ovog koda bit će prikaz retka "zdravo svijetu!"

Treg

TReg(<Строка>) . Pretvara niz na sljedeći način: prvi znak svake riječi pretvara se u velika slova, a preostali znakovi riječi pretvaraju se u mala slova.

Primjer 12. Učinite prvo veliko slovo slova riječi u retku "zdravo svijete!"

StringTreg = TReg("zdravo svijete!"); Izvješće(StringTreg);

Rezultat izvršavanja ovog koda bit će prikaz retka "Hello World!"

Simbol

Simbol(<КодСимвола>) . Dobiva znak prema njegovom Unicode kodu.

Primjer 13. Dodajte lijevo i desno retku "Hello World!" simbol ★

StringWithStars = Symbol("9733")+"Hello World!"+Symbol("9733"); Izvješće (niz sa zvjezdicama);

Rezultat izvršavanja ovog koda bit će prikaz retka "★Hello World!★"

Šifra simbola

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

Primjer 14. Saznajte kod posljednjeg znaka u retku "Hello World!"

String = "Hello World!"; Šifra znaka = Šifra znaka (niz, dužina niza (niz)); Obavijesti(CharacterCode);

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

Prazna linija

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

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

Empty = EmptyString(" "); Izvješće (prazno);

Rezultat izvršavanja ovog koda bit će prikaz riječi "Da" (string izraz logičke vrijednosti Pravi).

PageReplace

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

Primjer 16. U retku "Hello World!" riječ “Mir” zamijeniti riječju “Prijatelji”.

String = StrReplace("Zdravo svijete!", "Svijete", "Prijatelji"); Izvješće (niz);

Rezultat izvršavanja ovog koda bit će prikaz retka "Zdravo prijatelji!"

StrBrojLines

StrNumberRow(<Строка>) . Omogućuje brojanje redaka u nizu s više redaka. Ići nova linija u 1s 8 koristi se simbol P.S(znak novog retka).

Primjer 17. Odredite broj redaka u tekstu:
"Prvi red
Druga linija
Treća linija"

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

Rezultat izvršavanja ovog koda bit će prikaz broja redaka u tekstu: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Dobiva redak u nizu s više reda prema njegovom broju. Numeriranje redaka počinje od 1.

Primjer 18. Dobiti zadnji red u tekstu:
"Prvi red
Druga linija
Treća linija"

Tekst = "Prvi red" + Simboli. PS + "Drugi red" + Simboli. PS + "Treći red"; ZadnjiRed = StrGetRow(Tekst, StrBrojReda(Tekst)); Izvješće (Zadnji red);

Rezultat izvršavanja ovog koda bit će prikaz retka "Treći red".

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 retku “Lines in 1s 8.3 and 8.2”, bez obzira na velika i mala slova.

Linija = "Linije u 1s 8.3 i 8.2"; BrojPojava = StrBrojPojava(Vreg(Niz), "C"); Izvješće (Broj pojavljivanja);

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

Stranica počinje s

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

Primjer 20. Utvrditi da li PIB odabrane druge ugovorne strane počinje brojem 1. Upisati varijablu Protustranka Protustranke.

TIN = Suprotna ugovorna strana.TIN; StartsUNits = StrStartsWith(TIN, "1"); If Započinje jedinicama Then //Vaš kod EndIf;

PageEndsOn

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

Primjer 21. Utvrditi da li PIB odabrane druge ugovorne strane završava brojem 2. Upisati varijablu Protustranka pohranjuje se referenca na element imenika Protustranke.

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

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Rastavlja niz u dijelove pomoću navedenih znakova za razdvajanje i zapisuje dobivene nizove u polje. Prvi parametar pohranjuje izvorni niz, drugi sadrži niz koji sadrži razdjelnik, a treći označava trebaju li prazni znakovi biti upisani u niz (prema zadanim postavkama Pravi).

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

Niz = "1; 2; 3"; Niz = StrDivide(Niz, ";"); For Count = 0 By Array.Quantity() - 1 pokušaj ciklusa Array[Count] = Number(AbbrLP(Array[Count])); Niz izuzetaka [Sch] = 0; EndAttemptsEndCycle;

Kao rezultat izvršenja dobit ć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 odvojene graničnikom navedenim u drugom parametru.

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

Za Račun = 0 Po Array.Quantity() - 1 ciklus Array[Act] = String(Array[Act]); EndCycle; Redak = StrConnect(niz, "; ");

bok svima
Danas su me zamolili da ne prikazujem prefiks dokumenta prilikom ispisa implementacijskog dokumenta, riješio sam problem na sljedeći način.

StrReplace(Broj, Lev(Broj, 3), "" );

Kad sam pogledao pomoćnika za sintaksu, toliko mi se svidio da sam htio pisati o njemu rad s nizovima u 1C:Enterprise.

Niz u 1C odnosi se na primitivni tip podataka.

Ako pogledate pomoć 1C, vidjet ćemo sljedeći opis tipa String:
Vrijednosti ove vrste sadrže Unicode niz proizvoljne duljine.
Ako koristite svoje riječi o žicama, uspjet će. Niz je konstanta koja se sastoji od različitih znakova, uvijek okruženih navodnicima.

Postavljanje linije
Pozdrav = "Zdravo putniče";

Višeredni redovi u tipičnim konfiguracijama najčešće se stvaraju pomoću okomitog razdjelnika “|”:
String = "Više redaka
|niz
|pisati
|tekst";

Određen je navodnik unutar niza dvostruki navodnici.
String = ""Tekst u navodnicima"";

Postoji mnogo operacija nad nizovima (pretraga unutar niza, određivanje prvih itd.), bolje je pogledati Syntax Assistant.
Pomoćnik sintakse - Opći opis ugrađeni jezik -> ugrađene funkcije -> funkcije za rad sa stringovima.

Funkcije za rad sa stringovima

Evo kratkog sažetka funkcija za rad sa nizovima:

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

SimbolKod(<Строка>, <НомерСимвола>) – Funkcija prima kod znaka koji se nalazi u prenesenom nizu na mjestu s navedenim brojem.

Lav(<Строка>, <ЧислоСимволов>) – Funkcija odabire prve lijeve znakove niza.

Pronaći(<Строка>, <ПодстрокаПоиска>) — Funkcija pronalazi pojavu traženog niza kao podniza u izvornom nizu.

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

Pravo(<Строка>, <ЧислоСимволов>) – Ova se funkcija razlikuje od funkcija Lijevo po tome što odabire posljednje znakove s desne strane niza.

Prazna linija (<Строка>) — Funkcija provjerava prisutnost značajnih znakova u nizu.

Simbol(<КодСимвола>) — Funkcija pretvara kod znaka u niz koji sadrži znak.

AbbrL(<Строка>) — Funkcija odsijeca beznačajne znakove lijevo od prvog značajnog znaka u nizu.

AbbrLP(<Строка>) — Funkcija skraćuje beznačajne znakove lijevo od prvog značajnog znaka u retku i razmake desno od posljednjeg značajnog znaka u retku.

Skraćenica(<Строка>) — Funkcija odsijeca beznačajne znakove desno od posljednjeg značajnog znaka u nizu.

Srijeda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) — Funkcija odabire niz znakova, počevši od znaka<НачальныйНомер>, ukupni broj<ЧислоСимволов>.

StrLength(<Строка>) — Funkcija dobiva broj znakova u retku.

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

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

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) — Funkcija izračunava broj pojavljivanja podniza za pretraživanje u izvornom nizu.

StrNumberRow(<Строка>) — Funkcija broji broj redaka u višerednom nizu. U nizu s više redova, redovi su odvojeni novim redovima.

TReg(<Строка>) — Funkcija pretvara niz u velika i mala slova. To znači da se prvi znak svake riječi pretvara u velika slova ili u velika slova ako za znak nisu navedena velika slova. Preostali znakovi pretvaraju se u mala slova.

Pretvorbe tipa
Za eksplicitnu konverziju tipova podataka postoje funkcije istog naziva s tipom podataka u koji se vrši konverzija: String(<Значение>)

NizIzBrojeva = Niz(Broj);

Sve ove funkcije detaljno su opisane u Syntax Assistant-u; u članku sam opisao kako Syntax Assistant može pomoći programeru početniku.

Primjeri za rad sa stringovima

Pretvaranje broja u niz i natrag.

Da biste dobili prikaz godine u nizu, koristite funkciju Format.

Godina = Format(CurrentDate(), "DF=yyyy") // Godina = "2012"

Za pretvaranje broja u niz bez umetanja znaka za razdjelnik grupe (razmak bez prekida), morate koristiti funkciju Format s parametrom NG=0:

Broj = 2012 Linija = Format(Broj, "NH=0" ); //Niz = "2012"

String Bez razmaka.

Implementirano u verziji 8.3.6.1977.

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

Prije ste mogli izvoditi sve radnje koje izvode nove funkcije. Korištenje više ili manje složenih algoritama napisanih na ugrađenom jeziku. Stoga vam nove funkcije ne daju nikakve fundamentalno nove mogućnosti. Međutim, oni vam omogućuju smanjenje količine koda i čine ga jednostavnijim i razumljivijim. Osim toga, omogućuju vam da ubrzate izvršenje radnji. Budući da funkcije implementirane u platformu rade, naravno, brže od sličnog algoritma napisanog na ugrađenom jeziku.

Funkcija oblikovanja StrTemplate()

Ova funkcija zamjenjuje parametre u niz. Potreba za takvom pretvorbom često se javlja, primjerice, prilikom prikaza poruka upozorenja. Sintaksa ove funkcije je sljedeća:

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

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

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

Da biste označili određeno mjesto u predlošku na kojem želite izvršiti zamjenu, morate koristiti markere kao što su %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 redak:

Pogreška podataka u retku 2 (potrebna vrsta datuma)

Funkcija za rad sa stringovima StrCompare()

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

Mogli biste izvršiti istu radnju ranije koristeći objekt Usporedba vrijednosti:

Međutim, korištenje nove značajke izgleda lakše. Osim toga, funkcija, za razliku od objekta usporedbe vrijednosti, također radi u tanak klijent, i u web klijentu.

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

Ove funkcije određuju počinje li niz određenim podnizom ili završava li niz navedenim podnizom. Algoritam za ove funkcije nije teško implementirati u ugrađeni jezik, ali njihova prisutnost omogućuje pisanje čišćeg i razumljivijeg koda. I rade brže.

Na primjer, prikladni su za korištenje u If izjavi:

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

Ove funkcije dijele niz na dijelove pomoću određenog graničnika. Ili obrnuto, kombiniraju nekoliko redaka u jedan, umetajući odabrani razdjelnik između njih. Pogodni su za izradu ili analizu dnevnika i tehnoloških dnevnika. Na primjer, možete lako raščlaniti unos tehnološkog dnevnika na dijelove prikladne za daljnju analizu:

Funkcija za rad sa stringovima StrFind()

Umjesto stare funkcije Find(), implementirali smo nova značajka, koji ima dodatne značajke:

  • Traži u različitim smjerovima (od početka, od kraja);
  • Pretraživanje s određene pozicije;
  • Potražite pojavu s određenim brojem (drugi, treći itd.).

Zapravo, duplicira mogućnosti stare funkcije. Ovo je učinjeno kako bi se održala kompatibilnost s modulima kompajliranim u starijim verzijama. Preporuča se da više ne koristite staru funkciju Find().

Dolje je primjer korištenja novih mogućnosti pretraživanja. Obrnuto pretraživanje je korisno kada vam je potreban posljednji dio formaliziranog niza, kao što je puni naziv datoteke u URL-u. A pretraživanje s određenog položaja pomaže u slučajevima kada trebate pretraživati ​​u poznatom fragmentu, a ne u cijelom retku.

Postoji nekoliko mehanizama za rad sa nizovima u 1C upitima. Prvo se mogu dodati linije. Drugo, možete uzeti podniz iz niza. Treće, nizovi se mogu uspoređivati, uključujući i prema uzorku. To je vjerojatno sve što se može učiniti sa žicama.

Dodavanje niza

Za dodavanje redaka u upitu koristi se operacija “+”. Možete dodati samo nizove ograničene duljine.

ODABERITE "Ime: " + Protustrane. Naziv KAO Stupac 1 FROM Direktorija. Protustrane AS Protustrane WHERE Protustrane. Veza = &Veza

Funkcija podniza

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

Analog funkcije Environment() iz objektnog modela. Funkcija Substring() može se primijeniti na podatke niza i omogućuje odabir fragmenta <Строки> , počevši od broja znaka <НачальнаяПозиция> (znakovi u retku numerirani su počevši od 1) i duljina <Длина> likovi. Rezultat izračuna funkcije ima tip niza promjenjive duljine, a duljina će se smatrati neograničenom ako <Строка> ima neograničenu duljinu i parametar <Длина> nije konstanta niti veća od 1024.

Ako je duljina 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 duljine u nizove ograničene duljine. Umjesto toga, bolje je koristiti cast operator EXPRESS().

Funkcija Slična

Ako trebamo provjeriti zadovoljava li atribut niza određene kriterije, uspoređujemo ga:

SELECT Counterparties. Naziv AS Stupac 1 FROM imenika. Counterparties AS Counterparties WHERE Counterparties. Naziv = "Gazprom"

Ali što ako trebate suptilniju usporedbu? Ne samo jednakost ili nejednakost, već sličnost s određenim uzorkom? Upravo je za to stvorena funkcija SIMILAR.

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

Operator SIMILAR omogućuje vam da usporedite vrijednost izraza navedenog lijevo od njega s nizom uzoraka navedenim desno. Vrijednost izraza mora biti tipa string. Ako vrijednost izraza odgovara uzorku, rezultat operatora bit će TRUE, inače će biti FALSE.

Sljedeći znakovi u nizu predloška su službeni znakovi i imaju različito značenje od znakova niza:

  • % (postotak): niz koji sadrži bilo koji broj proizvoljnih znakova;
  • _ (podvlaka): jedan proizvoljan znak;
  • […] (V uglate zagrade jedan ili više znakova): svaki pojedinačni znak naveden unutar uglatih zagrada. Nabrajanje može sadržavati raspone, na primjer a-z, što znači proizvoljni znak uključen u raspon, uključujući krajeve raspona;
  • [^...] (u uglatim 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 za sebe i ne nosi nikakvo dodatno opterećenje. Ako jedan od navedenih znakova treba biti napisan kao sam, tada mu mora prethoditi<Спецсимвол>. Sebe<Спецсимвол>(bilo koji prikladan simbol) definiran je u istoj izjavi nakon ključna riječ POSEBAN SIMBOL.

Tip String nalazi se u svim programskim jezicima. Primitivan je, au 1C postoji mnogo funkcija za rad s njim. U ovom ćemo članku pobliže pogledati razne načine rad s tipovima nizova u 1C 8.3 i 8.2 koristeći primjere.

Crta

Kako bi se varijabla bilo koje vrste pretvorila u niz, postoji funkcija istog naziva "String()". Ulazni parametar bit će sama varijabla čija se string reprezentacija 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 niz, već i druge, na primjer, elemente direktorija i dokumenata.

SokrLP, SokrL, SokrP

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

Kratica(" Razmaci će biti uklonjeni s obje strane ") // "Razmaci će biti uklonjeni s obje strane"
Kratica(" Razmaci s obje strane bit će uklonjeni ") // " Razmaci s lijeve strane bit će uklonjeni "
Kratica (" Razmaci s obje strane bit će uklonjeni ") // " Razmaci s desne strane bit će uklonjeni "

Leo, desno, srednje

Ove vam funkcije omogućuju obrezivanje dijela niza. Funkcija "Left()" vratit će dio niza s njegove lijeve strane navedene duljine. Funkcija "Right()" je slična, ali obrezuje s desne strane. Funkcija “Avg()” omogućuje vam da odredite broj znaka iz kojeg će biti odabran red i njegovu duljinu.

Lev("Varijabla niza", 4) // vraća "Str"
Right("Varijabla niza", 7) // vraća "varijablu"
Medium("Varijabla niza", 2, 5) // vraća "troko"

StrLength

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

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

Pronaći

Funkcija omogućuje traženje dijela niza u varijabli niza. Povratna vrijednost bit će broj koji pokazuje položaj početka pronađenog niza. Ako se ne pronađe podudaranje, vraća se nula.

Imajte na umu da pretraživanje razlikuje velika i mala slova. Ako postoji više od jednog pojavljivanja podniza za pretraživanje u izvornom 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 omogućuje vam da odredite je li niz prazan. Sporedni znakovi kao što su razmak, povratak na početak 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 su funkcije vrlo korisne pri usporedbi i pretvaranju varijabli niza. "Vreg()" će vratiti originalni niz velika slova, “NReg()” je na dnu, a “TReg()” će ga formatirati tako da će prvi znak svake pojedine riječi biti velikim, a svi sljedeći bit će velikim.

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

PageReplace

Ova je funkcija analogna zamjeni u uređivači teksta. Omogućuje zamjenu jednog znaka ili skupa znakova drugim u varijablama niza.

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

StrBrojLines

Funkcija vam omogućuje da odredite broj redaka odvojenih znakom za početak u tekstualnoj varijabli.

Petlja u donjem primjeru proći će 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šelinijskim tekstom na isti način kao i prethodna. Omogućuje vam da dobijete određeni niz iz tekstualne varijable.

StrGetString("Niz1" + Znakovi.PS + "Niz2" + Znakovi.PS + "Niz3", 2) // vrati "Niz2"

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 vam funkcije omogućuju dobivanje znaka prema njegovom kodu u Unicode kodiranju, kao i određivanje tog koda prema samom znaku.

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

Uobičajeni zadaci pri radu s nizovima

Ulančavanje nizova

Za kombiniranje nekoliko stringova (za izvođenje ulančavanja) dovoljno je upotrijebiti operator zbrajanja.

“Redak 1″ + “Redak 2” //rezultat dodavanja dva retka bit će “Redak 1 Redak 2”

Pretvorba tipa

Da bi se vrsta pretvorila u string, na primjer, poveznica na element imenika, broj itd., dovoljno je koristiti funkciju “String()”. Funkcije poput “ScrLP()” također će pretvoriti varijable u niz, ali odmah uz odsijecanje beznačajnih znakova.

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

Imajte na umu da prilikom pretvaranja broja u niz program automatski dodaje razmak koji odvaja tisuću. Kako 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

Vrlo često ćete se morati nositi s potrebom navođenja navodnika u varijabli niza. To može biti tekst zahtjeva napisan u konfiguratoru ili samo varijabla. Da biste riješili ovaj problem, samo trebate postaviti dva navodnika.

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

Više redaka, prijelom reda

Kako biste stvorili višeredni tekst, samo mu dodajte prijelome redaka (Symbols.PS).

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

Kako ukloniti razmake

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

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

Ako nakon pretvaranja broja u niz trebate ukloniti neprekinuti prostori, koristite sljedeću konstrukciju:

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

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

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

Međusobno uspoređivanje nizova

Pojmove možete uspoređivati ​​s uobičajenim znakom jednakosti. Usporedba je osjetljiva na velika i mala slova.

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