Naujos funkcijos darbui su stygomis. Naujos funkcijos darbui su eilutėmis 1c rasti vietą eilutėje

1 DALIS. METODAI (26).

1.1. Pagrindiniai metodai (10). Nepriklausomi, sukurti pagal savo paprastus algoritmus.

Page_Add() (dešinė-kairysis pridėjimas su nurodytais simboliais).

Page_Inverse () (inversija – simboliai iš dešinės į kairę).

Page_Codes() (simbolių kodai iki "," ir masyvas su kodais)

Page_Characters() (kodų eilutė, atskirta "," arba iš masyvo su kodais)

Page_ReplaceSymbols() (kai kurių simbolių pakeitimas kitais).

String_FromArray() (eilutė iš fragmentų masyvo, atskirto skyrikliu)

Page_FindIn() (ieškokite poeilutės (įskaitant dešinėje) su nurodytu įvykio numeriu).

Page_FindGr() (Ieškoti simbolių grupės, įtrauktos į nurodytą simbolių rinkinį)

Page_FindNumber() (Ieškoti numerio, įskaitant dešinėje su nurodytu įvykio numeriu)

Page_Interpret() (į masyvą, pagal nustatytą sintaksę)

1.2. Išvestiniai metodai (12). Tiesą sakant, tai yra keturių apibendrintų algoritmų metodų naudojimas (žr. 2 dalį)

Page_Number() (nuo eilutės pradžios ir pabaigos, nebijokite neskaitinių simbolių.

Page_Find() (ieškokite poeilutės (įskaitant didžiąsias ir mažąsias raides ir dešinėje) su nurodytu įvykio numeriu).

Page_Replace() (ieškokite (įskaitant didžiąsias ir mažąsias raides ir dešiniąsias) ir pakeiskite skyriklio poeilutes).

String_Piece() (eilutės dalis tarp nurodytų skyriklio atvejų (kairėje arba dešinėje)).

Page_ReplacePiece() (pakeičia „gabalas“ šaltinio eilutėje nurodyta eilute).

Puslapis_ВArray() (tarp nurodytų skyriklio atvejų (įskaitant tuos, kurie yra dešinėje ir be didžiųjų raidžių).

Page_TransferBySyllables() (padalinta į eilutes „Vargu“, su brūkšneliu).

Page_MoveByWords() (padalinta į eilutes „Softly“)

Page_Cut() („Iškirpti“ į nurodyto ilgio eilutes)

Str_Shorten() (pakeiskite kairiąją "sutrumpintų" simbolių grupę "pakeitimo eilute"

Page_Abbreviation() (pakeiskite dešinę „sumažintų“ simbolių grupę „pakeitimo eilute“

Str_ShortenS() ("sutrumpintų" simbolių grupės viduryje pakeiskite "pakeitimo eilutę"

Page_Extend (išplėtimas iki nurodyto ilgio padidinant nurodytų simbolių skaičių)

1.3. Išsamūs metodai (3). Eilutės „išpjaustymas“ su perkėlimu į lentelę su detalia informacija.

Page_vTableIn() (į lentelę pagal įdėtųjų skyriklių sistemą).

Page_vTableGr (į lentelę pagal kelių lygių filtrą).

Page_inTableNumbers (lentelėje su skaičiais ir fragmentais tarp jų).

2 DALIS. BENDROJI METODAI-ALGORIMAI (3).

Page_Occurrence() (metodai „Rasti“ ir „Pakeisti“).

Page_Fragments() (metodai "Piece", "ReplacePiece,"InArray","inTableIn").

Page_Abcr() (metodai "AbcrL", "AbcrP", "AbcrS", "Išplėsti".

Page_Split() (metodai „Perkelti pagal skiemenis“, „Perkelti žodžiais“, „Iškirpti“).

3 DALIS. UNIVERSALI FUNKCIJA.

Tai tam tikra sąlyginio programavimo sąsaja, leidžianti

vienu metu eilutei taikyti kelis metodus. Įgyvendinta kaip

funkcijos su septyniais parametrais ("Demo" sukurta remiantis šia funkcija):

Puslapis_(metodai, antriniai metodai, įvestis, 1 parametras, 2 parametras, ilgis_numerio_pozicija, papildoma išvestis)

Galimybės:

- „Metodai“ - keli „kombinuoti“ ir (arba) vienas „išskirtinis“ metodas

(vieno simbolio kodai arba pavadinimai, galimi naudojant ",")

- „Submetodai“ - keletas „kombinuotų“ ir (arba) „išskirtinių“ parinkčių

„išskirtinis“ metodas (vieno simbolio kodai arba pavadinimai);

- „Įvestis“ – eilutė, masyvas arba reikšmių lentelė;

- "Param1" - paieškos eilutė, pakaitalai, skyrikliai, filtrai;

- "Param2" - pakaitinė eilutė arba simboliai;

- "Ilgis_skaičiaus_pozicija" - Skaičiai, skaičiai per skyriklį arba masyvą su skaičiais;

- „Papildoma išvestis“ – skaičius arba eilutė, masyvas arba verčių lentelė;

Submetodų pavadinimai ir (arba) vieno simbolio kodai, taip pat skaičiai

(Length_Number_Position) gali būti bet kuriuo atveju ir atskirtas

bet kuris iš šių skiriamųjų ženklų: ", :;".

4 DALIS. KELETAS PAVYZDŽIŲ.

There areNumbersInLine=(Str_FindNumber(InLine)<>Neapibrėžtas);

Eilutėje yra skaičiai = (String_FindGr(Inline,"+0123456789")>0);

Yra lotynų kalbos = (Str_FindGr(InStr, Str_Interpret("lL"))>0);

Yra nurodyti ženklai = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

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

5 DALIS. IŠVADA.

Kur įmanoma, apsigyvenau vienu pravažiavimu išilgai linijos. Antrasis praėjimas dažniausiai būna fragmentiškai. Nenaudojau integruotos funkcijos StrNumberOccurrences().

Naudojamos integruotos funkcijos: Left(), Right(), Middle(), StrLength()

- (padėties nustatymas ir linijos dalies gavimas turi būti „greitas“).

Įdiegta 8.3.6.1977 versijoje.

Išplėtėme funkcijų rinkinį, skirtą darbui su eilutėmis. Tai padarėme norėdami suteikti jums pažangesnius įrankius, skirtus eilučių duomenims analizuoti. Naujos funkcijos bus patogios ir naudingos atliekant technologines teksto analizės užduotis. Atliekant užduotis, susijusias su teksto, kuriame yra suformatuotų duomenų, analizavimu. Tai gali būti kai kurių failų, gautų iš įrangos, analizė arba, pavyzdžiui, technologinio žurnalo analizė.

Anksčiau galėjote atlikti visus veiksmus, kurie atlieka naujas funkcijas. Naudojant daugiau ar mažiau sudėtingus algoritmus, parašytus integruota kalba. Todėl naujos funkcijos nesuteikia jums jokių iš esmės naujų galimybių. Tačiau jie leidžia sumažinti kodo kiekį ir padaryti kodą paprastesnį bei suprantamesnį. Be to, jie leidžia pagreitinti veiksmų atlikimą. Nes platformoje įdiegtos funkcijos, žinoma, veikia greičiau nei panašus algoritmas, parašytas integruota kalba.

Formatavimo funkcija StrTemplate()

Ši funkcija pakeičia parametrus į eilutę. Tokios konversijos poreikis dažnai iškyla, pavyzdžiui, kai rodomi įspėjamieji pranešimai. Šios funkcijos sintaksė yra tokia:

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

<Шаблон>- tai eilutė, į kurią reikia pakeisti parametrų atvaizdus.

<Значение1> , ... <Значение10>- tai yra parametrai (daugiausia dešimt), kurių atvaizdai turi būti pakeisti į eilutę.

Norėdami nurodyti konkrečią šablono vietą, kurioje norite atlikti pakeitimą, turite naudoti tokius žymenis kaip %1, ... %10. Šablone dalyvaujančių žymeklių skaičius ir parametrų, kuriuose yra reikšmės, skaičius turi sutapti.

Pavyzdžiui, tokio operatoriaus vykdymo rezultatas:

bus eilutė:

Duomenų klaida 2 eilutėje (reikia datos tipo)

Funkcija darbui su eilutėmis StrCompare()

Ši funkcija lygina dvi eilutes neskiriant didžiųjų ir mažųjų raidžių. Pavyzdžiui, taip:

Tą patį veiksmą galėtumėte atlikti anksčiau naudodami objektą Vertės palyginimas:

Tačiau naudoti naują funkciją atrodo lengviau. Be to, ši funkcija, skirtingai nei vertės palyginimo objektas, veikia ir plonajame kliente, ir žiniatinklio kliente.

Funkcijos, skirtos darbui su eilutėmis StrStartsWith(), StrEndsAt()

Šios funkcijos nustato, ar eilutė prasideda nurodyta poeile, ar eilutė baigiasi nurodyta poeile. Šių funkcijų algoritmą nėra sunku įdiegti įterptoje kalboje, tačiau jų buvimas leidžia parašyti švaresnį ir suprantamesnį kodą. Ir jie dirba greičiau.

Pavyzdžiui, juos patogu naudoti If teiginyje:

Funkcijos, skirtos darbui su eilutėmis StrDivide(), StrConnect()

Šios funkcijos padalija eilutę į dalis, naudodamos nurodytą skyriklį. Arba atvirkščiai, jie sujungia kelias eilutes į vieną, tarp jų įterpdami pasirinktą skyriklį. Jie yra patogūs žurnalams ir technologiniams žurnalams kurti ar analizuoti. Pavyzdžiui, galite lengvai išanalizuoti technologinio žurnalo įrašą į dalis, tinkamas tolesnei analizei:

Funkcija darbui su eilutėmis StrFind()

Vietoj senos funkcijos Find() įdiegėme naują funkciją, kuri turi papildomų galimybių:

  • Ieškoti skirtingomis kryptimis (nuo pradžios, nuo pabaigos);
  • Ieškoti iš nurodytos padėties;
  • Ieškokite įvykio su nurodytu skaičiumi (antru, trečiu ir pan.).

Tiesą sakant, tai dubliuoja senosios funkcijos galimybes. Tai daroma siekiant išlaikyti suderinamumą su moduliais, sudarytais senesnėse versijose. Rekomenduojama nebenaudoti senosios Find() funkcijos.

Toliau pateikiamas naujų paieškos galimybių naudojimo pavyzdys. Atvirkštinė paieška naudinga, kai reikia paskutinės formalizuotos eilutės dalies, pvz., viso failo pavadinimo URL. O paieška iš nurodytos padėties padeda tais atvejais, kai reikia ieškoti žinomame fragmente, o ne visoje eilutėje.

Yra keletas mechanizmų, kaip dirbti su eilutėmis 1C užklausose. Pirma, galima pridėti eilutes. Antra, galite paimti eilutę iš eilutės. Trečia, stygas galima palyginti, taip pat ir pagal šabloną. Tikriausiai tai viskas, ką galima padaryti su stygomis.

Stygos papildymas

Norėdami pridėti eilučių į užklausą, naudojama operacija „+“. Galite pridėti tik riboto ilgio eilutes.

PASIRINKITE "Vardas: " + Sandorio šalys. Pavadinimas AS 1 stulpelis FROM Katalogas. Sandorio šalys AS Sandorio šalys WHERE Sandorio šalys. Nuoroda = &Nuoroda

Poeilutės funkcija

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

Funkcijos Environment() analogas iš objekto modelio. Funkcija Substring() gali būti taikoma eilutės duomenims ir leidžia pasirinkti fragmentą <Строки> , pradedant simbolio numeriu <НачальнаяПозиция> (simboliai eilutėje numeruojami pradedant nuo 1) ir ilgis <Длина> personažai. Funkcijos skaičiavimo rezultatas turi kintamo ilgio eilutės tipą, o ilgis bus laikomas neribotu, jei <Строка> turi neribotą ilgį ir parametrus <Длина> nėra konstanta arba didesnis nei 1024.

Jei eilutės ilgis yra mažesnis nei nurodyta antrajame parametre, funkcija grąžins tuščią eilutę.

Dėmesio! Nerekomenduojama naudoti funkcijos SUBSTRING() norint konvertuoti neriboto ilgio eilutes į riboto ilgio eilutes. Vietoj to geriau naudoti perdavimo operatorių EXPRESS().

Funkcija panaši

Jei turime įsitikinti, kad eilutės atributas atitinka tam tikrus kriterijus, palyginame jį:

PASIRINKITE sandorio šalis. Pavadinimas AS 1 stulpelis FROM Katalogas. Sandorio šalys AS Sandorio šalys WHERE Sandorio šalys. Pavadinimas = "Gazprom"

Bet ką daryti, jei jums reikia subtilesnio palyginimo? Ne tik lygybė ar nelygybė, bet ir panašumas į tam tikrą modelį? Būtent tam buvo sukurta funkcija PANAŠAS.

LIKE – operatorius, skirtas patikrinti, ar eilutė yra panaši į šabloną. LIKE analogas SQL.

Panašus operatorius leidžia palyginti išraiškos, nurodytos jo kairėje, reikšmę su šablono eilute, nurodyta dešinėje. Išraiškos vertė turi būti eilutės tipo. Jei išraiškos reikšmė atitinka šabloną, operatoriaus rezultatas bus TRUE, kitu atveju jis bus FALSE.

Šie simboliai šablono eilutėje yra paslaugų simboliai ir jų reikšmė skiriasi nuo eilutės simbolio:

  • % (procentai): seka, turinti bet kokį skaičių savavališkų simbolių;
  • _ (pabraukimas): vienas savavališkas simbolis;
  • […] (vienas ar daugiau simbolių laužtiniuose skliaustuose): bet koks atskiras simbolis, esantis laužtiniuose skliaustuose. Sąraše gali būti diapazonų, pavyzdžiui, nuo a iki z, reiškiančių savavališką simbolį, įtrauktą į diapazoną, įskaitant diapazono galus;
  • [^...] (laužtiniuose skliaustuose neigimo ženklas, po kurio yra vienas ar daugiau simbolių): bet koks atskiras simbolis, išskyrus tuos, kurie išvardyti po neigimo ženklo.

Bet koks kitas simbolis reiškia save ir nekelia jokios papildomos apkrovos. Jei vieną iš išvardytų simbolių reikia parašyti kaip save patį, tada prieš jį reikia įrašyti<Спецсимвол>. Aš pats<Спецсимвол>(bet koks tinkamas simbolis) apibrėžiamas tame pačiame teiginyje po raktinio žodžio SPECIAL CHARACTER.