Uusia toimintoja merkkijonojen käsittelyyn. Uusia toimintoja merkkijonojen 1c muuntamiseen merkkijonoksi

Ohjelmointikielen perusominaisuuksiin kuuluu yleensä työskentely numeroiden ja merkkijonojen kanssa. Yleensä nämä ominaisuudet on koodattu kääntäjäkoodiin (tai ohjelmointikielen "perus"-luokat toteutetaan).

1C:ssä kyky työskennellä merkkijonojen kanssa on ohjelmoitu itse alustaan. Tänään tarkastelemme 1C-merkkijonojen kanssa työskentelyn ominaisuuksia ohjelmissa sisäänrakennetulla 1C-kielellä.

Viivan arvo 1C

1. Aloitetaan yksinkertaisimmasta. Muuttujan luominen ja vakiomerkkijonoarvon määrittäminen sille näyttää tältä 1C:ssä:

Muuttuja = "Hei, maailma!";

Jos sinun on määritettävä lainausmerkki vakiossa 1C-merkkijonoarvossa, sinun on tuplattava se ""

Muuttuja = "Hei, maailma"!;

2. Rivinvaihto 1C voidaan määrittää kahdella tavalla kerralla. Ensimmäinen käyttää symbolia |

Muuttuja = "Hei,
| maailman! ";

Toinen on Symbols-järjestelmän luettelointi. Sen avulla voit lisätä sekä 1C-rivinvaihtoja että muita ei-tulostuvia merkkejä, kuten TAB.

Muuttuja = "Hei" + Symbols.PS + "rauha!";

3. 1C:n konfiguraatioita voidaan kehittää paitsi yhdelle kielelle (venäjäksi, englanniksi tai toiselle) - mutta samanaikaisesti useille kielille. Tässä tapauksessa tällä hetkellä käytetty kieli valitaan 1C-ikkunan alareunasta.

Kieliluettelo sijaitsee määritysikkunassa Yleiset/Kielet-haarassa. Jokaisella kielellä on lyhyt tunniste, kuten ru tai eng.

On selvää, että ohjelmoitaessa tällaista kokoonpanoa, 1C-linjat voivat olla myös monikielisiä. Tätä varten on mahdollista luoda tällainen 1C-rivi määrittämällä läpi; vaihtoehdot kielitunnisteen mukaan:

Muuttuja = "ru=""Hei, maailma! ""; en=""Hei, maailma! """;

Jos käytät tällä tavalla muodostettua 1C-linjaa tavalliseen tapaan, se on se, mitä siihen on kirjoitettu. Jotta järjestelmä voisi jakaa sen kahdeksi vaihtoehdoksi ja käyttää haluttua vaihtoehtoa, sinun on käytettävä НStr()-funktiota:

//oikea kaksikielisille kokoonpanoille
Raportti(NStr(muuttuja));

Rekvisiitta linjalla 1C

Attribuutti on kenttä 1C-hakemistossa/asiakirjassa. Se eroaa 1C-kielen ohjelman muuttujasta siinä, että attribuutille sen tyyppi ilmoitetaan tarkasti (numero, 1C-merkkijono jne.). Jos haluat virkistää muistiasi siitä, mitä rekvisiitta on, katso oppitunti aiheesta.

Jos määrität attribuutin tyypin - rivi 1C, sinun on lisäksi määritettävä parametrit.

1C-rivejä on rajoittamaton pituus (merkitty pituus = 0) ja rajoitettu pituus, mikä ilmaisee tarkan merkkimäärän. Rajattoman pituiset 1C-rivit on tallennettu erilliseen SQL-taulukkoon, joten niiden käyttö on vähemmän tuottavaa kuin rajoitettujen.

Siksi rajoittamattoman pituisten 1C-merkkijonojen käytöllä on rajoituksensa - niitä ei ole mahdollista käyttää kaikkialla. Se ei ole sallittu esimerkiksi asiakirjanumerona, viitekoodina tai mittana.

Työskentely 1C-kielien kanssa

1C-alustalla on useita sisäänrakennettuja toimintoja merkkijonojen kanssa työskentelemiseen.

  • AbbrLP ("Uskomatonta, mutta totta!")
    Poistetaan riviltä 1C ylimääräisiä tiloja. Voidaan käyttää myös minkä tahansa tyypin muuntamiseen 1C-merkkijonoksi (esimerkiksi numerot).
  • Muuttuja = "Vasya" + AbbrLP(" plus") + "Olya"; //tulee "Vasya plus Olya"
    Esimerkki useiden 1C-merkkijonoarvojen summaamisesta. Tuloksena on yksi rivi 1C.
  • Muuttuja = Lev("Musiikki", 2); //tulee olemaan "Mu"
    Muuttuja = Medium("Musiikki", 2, 2); //tulee "uhka"
    Muuttuja = Oikeudet("Musiikki", 2); //tulee "ka"
    Erilaisia ​​vaihtoehtoja alimerkkijonon saamiseksi 1C-merkkijonosta.
  • Muuttuja = Etsi("Musiikki", "zy"); //tulee 3
    Etsi alimerkkijono merkkijonosta 1C alkaen merkistä 1.
  • Muuttuja = StrLength("Musiikki"); //tulee 6
    Palauttaa 1C-rivin merkkien määrän.
  • Report("Hei") //viesti-ikkunassa 1C-ikkunan alaosassa
    Alert("Hei") //ponnahdusikkuna
    Status("Hei") //tilanäytön rivillä vasemmassa alakulmassa
    .

Esineiden tuominen riville 1C

Kuten tiedät, tällä hetkellä suosituin muoto strukturoidun tiedon vaihtamiseen on XML. Jopa uusin versio MS Office Word ja Excel tallentavat tiedostot tässä muodossa (docx ja xlsx, vastaavasti, vaihda tiedostopääte zip, avaa arkistaattorissa).

1C-alusta tiedonvaihtoon tarjoaa useita vaihtoehtoja, joista tärkein on myös XML.

1. Yksinkertaisin tapa on käyttää funktiota Abreviation() tai String(). Voit käyttää REPRESENTATION()-funktiota pyynnön rungossa. Niiden toiminnan tulos on sama - he luovat käyttäjälle merkkijonoesityksen mistä tahansa 1C-objektista.

Hakemistolle oletusarvoisesti tämä on sen nimi. Asiakirjalle – asiakirjan nimi, numero ja päivämäärä.

2. Mikä tahansa 1C-objekti (rajoituksin) voidaan muuntaa XML-muotoon ja päinvastoin. Muunnosprosessia kutsutaan serialisoinniksi.

StringViewXml = XMLString(Arvo); //hae XML 1C-arvosta
Arvo1C = XMLValue(Tyyppi("Hakemiston linkki.Nimikkeistö"),TyyppimerkkijonoXml); //Hae 1C-arvo XML-merkkijonosta, sinun on määritettävä vastaanotettava 1C-tyyppi

3. 1C-alustalla on oma tapa muuntaa mikä tahansa 1C-objekti merkkijonoksi. Se siirtyi versiosta 1C 7.7. Muut ohjelmat eivät ymmärrä tätä muotoa, mutta muut 1C ymmärtävät sen, mikä tekee siitä helppoa vaihtamiseen 1C-tietokantojen välillä.

Rivi = ValueInRowInt(Arvo1C); //hae merkkijono 1C arvosta 1C
ValueVFile("C:\OmaTiedosto.txt", Arvo1C); //toinen vaihtoehto, saamme tiedoston, jossa on tallennettu merkkijono 1C-arvosta
Arvo1C = ValueFromStringInt(merkkijono); //takaisin riviltä 1C
Arvo1C = ArvoTiedosto("C:\OmaTiedosto.txt"); //takaisin tiedostosta

1C-rivien muokkaaminen lomakkeella

Sen lisäksi, että työskentelen 1C-merkkijonojen kanssa 1C-kielisessä ohjelmassa, haluaisin tietysti, että käyttäjä voi muokata niitä. Tähän on useita mahdollisuuksia:

1. Helpoin tapa on pyytää 1C-linjan syöttämistä pyynnöstä. Tätä menetelmää käytetään opetettaessa 1C-ohjelmointia elämässä sitä käytetään paljon harvemmin (mutta sitä käytetään!).

Muuttuja = "";
Rivi = EnterValue(Muuttuja, "Anna koko nimi");

2. 1C-objektin (hakemisto/asiakirja) tai lomakkeen yksityiskohtien (katso) näyttämiseksi käytetään useimmiten syöttökenttää. Tämä on 1C:n yleisin työkalu, jonka avulla käyttäjä voi työskennellä muokkauskenttien kanssa.

3. Syöttökentän ominaisuuksia voidaan laajentaa (katso syöttökentän ominaisuudet, oikealla painikkeella siitä, lisätietoja):

  • Valintaruutu Monirivinen muokkaustila
  • Lisämuokkausvalintaruutu (käytettävissä, jos edellinen valintaruutu on valittuna)
  • Valintaruutu Salasanatila (katso).

4. Jos kaikki syöttökentän ominaisuudet eivät riitä sinulle, on sisäänrakennettu editori. Voit lisätä sen lomakkeeseen lisäämällä Kenttä Lomake/Lisää ohjausvalikkoon tekstiasiakirja. Sen ominaisuuksissa voit määrittää sen toimintatavan – Extension-ominaisuuden.

Tekstiasiakirjan kenttää ei voi liittää suoraan tietoihin. Lomakkeen OnOpen()-tapahtumakäsittelijään on kirjoitettava funktio (katso):

Lomakeelementit.ElementinNimiTekstiAsiakirjaField.SetText(StringArvo); //tässä ValueString on teksti, joka on saatu esimerkiksi attribuutista

Ja tallennuskäsittelyyn - esimerkiksi Tallenna-painikkeeseen - lisää tallennus:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ArvoRivi tässä on attribuutti, johon tallennamme arvon

5. 1C-versiossa 8.2.11, hallituissa lomakkeissa, on ilmestynyt uusi vaihtoehto 1C-rivin esittämiseen - Muotoiltu asiakirja -kenttä.


Kuten tekstidokumentin kenttä, se on asetettava avattaessa ja kirjoitettava muistiin, kun tallennat sen itse ohjelman avulla.

  • 1C-objektiin, jonka muotoa luomme (hakemisto, asiakirja, käsittely jne.) - lisää attribuutti, jonka tyyppi on Value Storage
  • OnReadOnServer()-funktiossa asetamme tekstin attribuutista

    //tässä attribuutti on 1C-objektin lisätty attribuutti
    //tässä FormattedDocument on muokattavan lomakkeen kentän nimi
    &Palvelimella

    FormattedDocument = CurrentObject.Attributes.Get();
    EndProcedure

  • EnnenWritingOnServer()-funktiossa tai -painikkeella kirjoitamme tekstin kentästä

    &Palvelimella
    Toimenpide, kun ReadingOnServer (nykyinen objekti)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    EndProcedure

Rivit 1C 8.3:ssa sisäänrakennetulla kielellä 1C edustavat primitiivisen tyypin arvoja Linja. Arvot tämän tyyppistä sisältää mielivaltaisen pituisen Unicode-merkkijonon. Merkkijonotyyppiset muuttujat ovat joukko merkkejä lainausmerkkien sisällä.

Esimerkki 1. Luodaan merkkijonomuuttuja tekstillä.

StringVariable = "Hei maailma!";

Toiminnot merkkijonojen käsittelyyn 1s:ssä 8.3

Tämä osio tarjoaa tärkeimmät toiminnot, joiden avulla voit muuttaa rivejä 1c:ssä tai analysoida niiden sisältämiä tietoja.

Vahvuus

Vahvuus(<Строка>) . Palauttaa parametrina välitetyn merkkijonon sisältämien merkkien määrän.

Esimerkki 2. Lasketaan merkkien määrä rivillä "Hei maailma!"

String = "Hei maailma!"; Merkkien lukumäärä = Stringth(merkkijono); Raportti(numeromerkit);

Tämän koodin suorittamisen tuloksena näkyy rivin merkkien määrä: 11.

AbbrL

AbbrL(<Строка>) . Leikkaa ei-merkittävät merkit merkkijonon ensimmäisen merkitsevän merkin vasemmalle puolelle.
Pienet hahmot:

  • tilaa;
  • rikkoutumaton tila;
  • taulukointi;
  • kuljetuksen paluu;
  • rivin käännös;
  • lomakkeen käännös (sivu).

Esimerkki 3. Poista kaikki välilyönnit rivin "world!" ja lisää siihen rivi "Hei".

String = Lyhenne("maailma!"); String = "Hei"+merkkijono; Raportti(merkkijono);

Tämän koodin suorittamisen seurauksena näytölle tulee rivi "Hei maailma!".

Lyhennettynä

Abbr(<Строка>) . Leikkaa ei-merkittävät merkit merkkijonon ensimmäisen merkitsevän merkin oikealle puolelle.

Esimerkki 4. Lomake riveistä "Hei" ja "rauhaa!" lause "Hei maailma!"

Rivi = Lyhenne("Hei ")+" "+ Lyhenne(" maailma!"); Raportti(merkkijono);

AbbrLP

AbbrLP(<Строка>) . Leikkaa ei-merkittävät merkit merkkijonon ensimmäisen merkitsevän merkin oikealle puolelle ja leikkaa myös ei-merkittävät merkit merkkijonon ensimmäisen merkitsevän merkin vasemmalle puolelle. Tätä toimintoa käytetään useammin kuin kahta edellistä, koska se on universaali.

Esimerkki 5. Poista merkityksettömät merkit vasemmalta ja oikealta vastapuolen nimestä.

Vastapuoli = Hakemistot Vastapuolet.Etsi tietojen mukaan ("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

Leijona

Leijona(<Строка>, <ЧислоСимволов>) . Hakee merkkijonon ensimmäiset merkit, merkkien määrä on määritetty parametrissa Merkkien määrä.

Esimerkki 6. Päästä sisään rakenne Työntekijä sisältää työntekijän etu-, suku- ja isänimen. Hanki merkkijono, jossa on sukunimi ja nimikirjaimet.

NimiAlkuperäinen = Lev(Työntekijä.Nimi, 1); Isännimi alkukirjain = Leijona (työntekijä. Isännimi, 1); FullName = Työntekijä.Sukunimi + " " + Etunimi + "." + Keskimmäinen alkukirjain + ".";

Oikein

oikein (<Строка>, <ЧислоСимволов>) . Hakee merkkijonon viimeiset merkit, parametrissa määritetyn määrän merkkejä Merkkien määrä. Jos määritetty merkkien määrä ylittää merkkijonon pituuden, palautetaan koko merkkijono.

Esimerkki 7. Kirjoita päivämäärä muodossa "vvvvkkpp" merkkijonomuuttujan loppuun, hanki päivämäärän sisältävä merkkijono ja muunna se tyypiksi Päivämäärä.

String = "Nykyinen päivämäärä: 20170910"; StringDate = Oikeudet(merkkijono, 8); Päivämäärä = Päivämäärä(StringDate);

keskiviikko

Keskiviikko(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Saa alimerkkijonon parametrina välitetystä merkkijonosta Linja, alkaen merkistä, jonka numero on määritetty parametrissa AlkuperäinenNumber ja parametriin siirretty pituus Merkkien määrä. Merkkien numerointi rivillä alkaa 1:stä. Jos parametrissa AlkuperäinenNumber arvo on pienempi tai yhtä suuri kuin nolla, niin parametri saa arvon 1. Jos parametri Merkkien määrä ei ole määritetty, valitaan merkit rivin loppuun asti.

Esimerkki 8. Anna yhdeksännestä paikasta alkavan merkkijonomuuttujan sisältää aluekoodin, hanki se ja kirjoita se erilliselle riville.

String = "Alue: 99 Moskova"; Alue = Keskiarvo(merkkijono, 9, 2);

Sivuhaku

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Etsii määritettyä osamerkkijonoa merkkijonosta ja palauttaa löydetyn alimerkkijonon ensimmäisen merkin paikkanumeron. Katsotaanpa tämän funktion parametreja:

  • Linja. lähde merkkijono;
  • Hae alimerkkijonoa. Etsi osamerkkijono;
  • Hakusuunta. Määrittää suunnan, jolla alimerkkijonoa etsitään merkkijonosta. Voi ottaa arvoja:
    • Hakusuunta.Alusta;
    • Haku.Loppusuunta;
  • Alkuasema. Määrittää paikan merkkijonossa, josta haku alkaa;
  • Esiintymien lukumäärä. Määrittää haetun alimerkkijonon esiintymisnumeron lähdemerkkijonossa.

Esimerkki 9. Rivillä "Hei maailma!" Määritä "ja"-merkin viimeisen esiintymän sijainti.

PositionNumber = StrFind("Hei maailma!", "ja", Hakusuunta.Loppu); Raportti(PositionNumber);

Tämän koodin suorittamisen tuloksena näytetään "ja"-symbolin viimeisen esiintymisen numero: 9.

VReg

VReg(<Строка>) . Muuntaa kaikki 1s8:ssa määritetyn merkkijonon merkit isoiksi kirjaimille.

Esimerkki 10: Muunna merkkijono "hei maailma!" isoihin kirjaimiin.

StringVreg = VReg("hei maailma!"); Raportti(StringVreg);

Tämän koodin suorittamisen seurauksena näyttöön tulee rivi "HELLO WORLD!"

NReg

NReg(<Строка>) . Muuntaa kaikki 1s8:ssa määritetyn merkkijonon merkit pieniksi kirjaimiksi.

Esimerkki 11: Muunna merkkijono "HELLO WORLD!" pieniin kirjaimiin.

StringNreg = NReg("HELLO MAAILMA!"); Raportti(StringVreg);

Tämän koodin suorittamisen tuloksena tulee näyttöön rivi "hello world!"

Treg

Treg(<Строка>) . Muuntaa merkkijonon seuraavasti: jokaisen sanan ensimmäinen merkki muunnetaan isoiksi, sanan muut merkit pieniksi kirjaimiksi.

Esimerkki 12: Kirjoita isot kirjaimet rivillä "hei maailma!"

StringTreg = TReg("hei maailma!"); Raportti(StringTreg);

Tämän koodin suorittamisen tuloksena tulee näkyviin rivi "Hello World!"

Symboli

Symboli(<КодСимвола>) . Hakee merkin Unicod-koodillaan.

Esimerkki 13. Lisää vasen ja oikea rivi "Hello World!" symboli ★

StringWithStars = Symboli("9733")+"Hei maailma!"+Symboli("9733"); Raportti(StringWithStars);

Tämän koodin suorittamisen seurauksena näyttöön tulee rivi ”★Hello World!★”

Symbolikoodi

SymbolCode(<Строка>, <НомерСимвола>) . Hakee Unicode-merkkikoodin ensimmäisessä parametrissa määritetystä merkkijonosta, joka sijaitsee toisessa parametrissa määritetyssä paikassa.

Esimerkki 14. Selvitä "Hei maailma!" -rivin viimeisen merkin koodi.

String = "Hei maailma!"; Merkkikoodi = Merkkikoodi(merkkijono, vahvuus(merkkijono)); Ilmoita (merkkikoodi);

Tämän koodin suorittamisen seurauksena näyttöön tulee symbolikoodi "!" - 33.

Tyhjä rivi

Tyhjä rivi(<Строка>) . Tarkistaa, sisältääkö merkkijono vain merkityksettömiä merkkejä, eli onko se tyhjä.

Esimerkki 15. Tarkista, onko kolmesta välilyönnistä koostuva merkkijono tyhjä.

Tyhjä = EmptyString(" "); Raportti(tyhjä);

Tämän koodin suorittamisen tuloksena tulee näyttöön sana "Yes" (loogisen arvon merkkijonolauseke Totta).

Sivunvaihto

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Etsii kaikki haun alimerkkijonon esiintymät lähdemerkkijonosta ja korvaa sen korvaavalla alimerkkijonolla.

Esimerkki 16. Rivillä "Hei maailma!" korvaa sana "rauha" sanalla "ystävät".

String = StrReplace("Hei maailma!", "Maailma", "Ystävät"); Raportti(merkkijono);

Tämän koodin suorittamisen tuloksena tulee näkyviin rivi "Hei ystävät!"

StrNumberLines

StrNumberRow(<Строка>) . Voit laskea monirivisen merkkijonon rivien määrän. Mennä uusi rivi 1s 8:ssa käytetään symbolia PS(rivin uusi merkki).

Esimerkki 17. Määritä tekstin rivien määrä:
"Ensimmäinen linja
Toinen linja
Kolmas rivi"

Numero = StrNumberString("Ensimmäinen rivi"+Merkit.PS +"Toinen rivi"+Symbolit.PS +"Kolmas rivi"); Raportti(numero);

Tämän koodin suorittamisen tulos on tekstin rivien lukumäärän näyttö: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Hakee rivin monirivisessä merkkijonossa sen numeron perusteella. Rivien numerointi alkaa 1:stä.

Esimerkki 18. Hae tekstin viimeinen rivi:
"Ensimmäinen linja
Toinen linja
Kolmas rivi"

Teksti = "Ensimmäinen rivi" + Symbolit + "Toinen rivi" + "Kolmas rivi"; Viimeinen rivi = StrGetRow(teksti, StrNumberLines(teksti)); Raportti(LastLine);

Tämän koodin suorittamisen tuloksena tulee näyttöön rivi "Kolmas rivi".

PageNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Palauttaa määritetyn alimerkkijonon esiintymisten lukumäärän merkkijonossa. Toiminto on isojen ja pienten kirjainten välinen erotus.

Esimerkki 19. Määritä, kuinka monta kertaa kirjain "c" esiintyy rivillä "Lines in 1s 8.3 and 8.2" riippumatta sen kirjaimesta.

Line = "Rivit 1s 8.3 ja 8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "C"); Raportti(Tapahtumien lukumäärä);

Tämän koodin suorittamisen tulos näyttää esiintymien lukumäärän: 2.

Sivu alkaa kanssa

StrStartsWith(<Строка>, <СтрокаПоиска>) . Tarkistaa, alkaako ensimmäisessä parametrissa välitetty merkkijono toisen parametrin merkkijonolla.

Esimerkki 20. Selvitä, alkaako valitun vastapuolen TIN numerolla 1. Anna muuttuja Vastapuoli Vastapuolet.

TIN = vastapuoli.TIN; StartsUNits = StrStartsWith(TIN, "1"); If Alkaa yksiköillä Then //Koodisi EndIf;

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . Tarkistaa, päättyykö ensimmäisessä parametrissa välitetty merkkijono toisen parametrin merkkijonoon.

Esimerkki 21. Selvitä, päättyykö valitun vastapuolen TIN numeroon 2. Anna muuttuja Vastapuoli viittaus hakemistoelementtiin tallennetaan Vastapuolet.

TIN = vastapuoli.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Koodisi EndIf;

Sivujako

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Jakaa merkkijonon osiin käyttämällä määritettyjä erotinmerkkejä ja kirjoittaa tuloksena olevat merkkijonot taulukkoon. Ensimmäinen parametri tallentaa lähdemerkkijonon, toinen sisältää erottimen sisältävän merkkijonon ja kolmas osoittaa, tuleeko taulukkoon kirjoittaa tyhjiä merkkijonoja (oletuksena Totta).

Esimerkki 22. Olkoon merkkijono, joka sisältää numeroita erotettuina merkillä “;”, hanki merkkijonosta joukko numeroita.

Merkkijono = "1; 2; 3"; Array = StrDivide(merkkijono, ";"); For Count = 0 By Array.Quantity() - 1 Cycle Attempt Array[Count] = Luku(AbbrLP(Matriisi[Laskuri])); Poikkeustaulukko[Sch] = 0; EndAttemptsEndCycle;

Suorituksen tuloksena saadaan taulukko, jossa on numeroita 1-3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Muuntaa ensimmäisen parametrin merkkijonojoukon merkkijonoksi, joka sisältää kaikki taulukon elementit erotettuna toisessa parametrissa määritetyllä erottimella.

Esimerkki 23. Hae alkuperäinen merkkijono käyttämällä edellisen esimerkin numerotaulukkoa.

Tilille = 0 Array.Määrä() - 1 Cycle Joukko[Toimi] = Merkkijono(Matriisi[Toimi]); EndCycle; Rivi = StrConnect(Matriisi, "; ");

Toteutettu versiossa 8.3.6.1977.

Olemme laajentaneet merkkijonojen kanssa toimivia funktioita. Teimme tämän tarjotaksemme sinulle kehittyneempiä työkaluja merkkijonotietojen jäsentämiseen. Uudet toiminnot ovat käteviä ja hyödyllisiä tekstianalyysin teknisissä tehtävissä. Tehtävissä, jotka liittyvät muotoiltua dataa sisältävän tekstin jäsentämiseen. Tämä voi olla joidenkin laitteelta vastaanotettujen tiedostojen analyysi tai esimerkiksi teknologisen lokin analyysi.

Voit suorittaa kaikki toiminnot, jotka suorittavat uusia toimintoja aiemmin. Käytä enemmän tai vähemmän monimutkaisia ​​algoritmeja, jotka on kirjoitettu sisäänrakennetulla kielellä. Siksi uudet toiminnot eivät anna sinulle mitään perustavanlaatuisia uusia ominaisuuksia. Niiden avulla voit kuitenkin vähentää koodin määrää ja tehdä koodista yksinkertaisemman ja ymmärrettävämmän. Lisäksi niiden avulla voit nopeuttaa toimien suorittamista. Koska alustassa toteutetut toiminnot toimivat tietysti nopeammin kuin vastaava sisäänrakennetulla kielellä kirjoitettu algoritmi.

Muotoilufunktio StrTemplate()

Tämä funktio korvaa parametrit merkkijonoksi. Tarve tällaiselle muunnokselle tulee usein esille esimerkiksi varoitusviestejä näytettäessä. Tämän funktion syntaksi on seuraava:

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

<Шаблон>- tämä on merkkijono, johon sinun on korvattava parametrien esitykset.

<Значение1> , ... <Значение10>- nämä ovat parametreja (enintään kymmenen), joiden esitykset on korvattava merkkijonoon.

Osoittaaksesi tietyn paikan mallissa, jossa haluat suorittaa korvauksen, sinun on käytettävä merkkejä, kuten %1, ... %10. Malliin sisältyvien merkkien määrän ja arvoja sisältävien parametrien määrän on vastattava.

Esimerkiksi tällaisen operaattorin suorittamisen tulos:

tulee rivi:

Tietovirhe rivillä 2 (päivämäärä vaaditaan)

Funktio merkkijonojen kanssa työskentelemiseen StrCompare()

Tämä toiminto vertaa kahta merkkijonoa isot ja pienet kirjaimet erottelemalla. Esimerkiksi näin:

Voit suorittaa saman toiminnon aiemmin käyttämällä Value Comparison -objektia:

Uuden ominaisuuden käyttäminen näyttää kuitenkin helpommalta. Ja tämän lisäksi toiminto, toisin kuin Value Comparison -objekti, toimii sekä ohuessa että web-asiakkaassa.

Funktiot merkkijonojen käsittelyyn StrStartsWith(), StrEndsAt()

Nämä funktiot määrittävät, alkaako merkkijono määritetyllä osamerkkijonolla vai päättyykö merkkijono määritettyyn osamerkkijonoon. Näiden toimintojen algoritmi ei ole vaikea toteuttaa sulautetulla kielellä, mutta niiden läsnäolo mahdollistaa puhtaamman ja ymmärrettävämmän koodin kirjoittamisen. Ja ne toimivat nopeammin.

Niitä on kätevä käyttää esimerkiksi If-lauseessa:

Toiminnot merkkijonojen StrDivide(), StrConnect() kanssa

Nämä funktiot jakavat merkkijonon osiin käyttämällä määritettyä erotinta. Tai päinvastoin, ne yhdistävät useita rivejä yhdeksi ja lisäävät valitun erottimen niiden väliin. Ne ovat käteviä lokien ja teknisten päiväkirjojen luomiseen tai analysointiin. Voit esimerkiksi helposti jäsentää teknisen lokimerkinnän osiin, jotka soveltuvat jatkoanalyysiin:

Funktio merkkijonojen kanssa työskentelemiseen StrFind()

Vanhan Find()-funktion sijasta toteutimme uusi ominaisuus, jossa on lisäominaisuuksia:

  • Hae eri suuntiin (alusta, lopusta);
  • Hae tietystä paikasta;
  • Hae esiintymää tietyllä numerolla (toinen, kolmas jne.).

Itse asiassa se kopioi vanhan toiminnon ominaisuudet. Tämä tehdään yhteensopivuuden säilyttämiseksi vanhempiin versioihin käännettyjen moduulien kanssa. On suositeltavaa, että et enää käytä vanhaa Find()-funktiota.

Alla on esimerkki uusien hakutoimintojen käyttämisestä. Käänteinen haku on hyödyllinen, kun tarvitset formalisoidun merkkijonon viimeisen fragmentin, kuten URL-osoitteen koko tiedostonimen. Ja etsiminen tietystä paikasta auttaa tapauksissa, joissa sinun on etsittävä tunnetusta fragmentista, ei koko riviltä.

Hei kaikki
Tänään he pyysivät minua olemaan näyttämättä asiakirjan etuliitettä tulostettaessa toteutusasiakirjaa, ratkaisin ongelman seuraavasti.

StrReplace(Numero, Lev(numero, 3), "" );

Kun katsoin syntaksiavustajaa, pidin siitä niin paljon, että halusin kirjoittaa siitä työskennellä merkkijonojen kanssa 1C:Enterprisessa.

1C:n merkkijono viittaa primitiiviseen tietotyyppiin.

Jos katsot 1C-ohjetta, näemme seuraavan kuvauksen merkkijonotyypistä:
Tämän tyyppiset arvot sisältävät mielivaltaisen pituisen Unicode-merkkijonon.
Jos käytät omia sanojasi merkkijonoista, se toimii. Merkkijono on vakio, joka koostuu useista merkeistä, jotka on aina ympäröity lainausmerkeillä.

Linjan asettaminen
Tervehdys = "Hei matkustaja";

Moniriviset merkkijonot sisään tyypillisiä kokoonpanoja luotiin useimmiten pystyerottimella “|”:
String = "Monirivinen
|merkkijono
|kirjoita
|teksti";

Merkkijonon sisällä on lainaus kaksoislainausmerkit.
String = ""Teksti lainausmerkeissä"";

Merkkijonoilla on monia operaatioita (haku merkkijonon sisältä, ensimmäisten määrittäminen jne.), on parempi katsoa Syntax Assistantia.
Syntaksiapuohjelma - Sisäänrakennetun kielen yleinen kuvaus -> sisäänrakennetut toiminnot -> funktiot merkkijonojen kanssa työskentelemiseen.

Toiminnot merkkijonojen kanssa työskentelyyn

Tässä on lyhyt yhteenveto merkkijonojen kanssa työskentelyn toiminnoista:

VReg(<Строка>) — Funktio muuntaa kaikki merkkijonon merkit isoiksi kirjaimiksi.

SymbolCode(<Строка>, <НомерСимвола>) – Toiminto vastaanottaa sen merkin koodin, joka sijaitsee lähetetyssä merkkijonossa määritetyn numeron kohdalla.

Leijona(<Строка>, <ЧислоСимволов>) – Toiminto valitsee merkkijonon ensimmäiset vasemmat merkit.

Löytö(<Строка>, <ПодстрокаПоиска>) — Funktio löytää hakumerkkijonon esiintymän alimerkkijonona lähdemerkkijonosta.

NReg(<Строка>) — Toiminto muuntaa kaikki merkkijonon merkit pieniksi kirjaimiksi.

oikein (<Строка>, <ЧислоСимволов>) – Tämä toiminto eroaa Vasen-funktioista siinä, että se valitsee viimeiset merkit merkkijonon oikealta puolelta.

Tyhjä rivi(<Строка>) — Funktio tarkistaa, onko merkkijonossa merkittäviä merkkejä.

Symboli(<КодСимвола>) — Funktio muuntaa merkkikoodin merkkijonoksi, joka sisältää merkin.

AbbrL(<Строка>) — Funktio leikkaa pois merkityksettömät merkit merkkijonon ensimmäisen merkitsevän merkin vasemmalla puolella.

AbbrLP(<Строка>) — Funktio leikkaa ei-merkittävät merkit rivin ensimmäisen merkitsevän merkin vasemmalle puolelle ja välilyönnit rivin viimeisen merkitsevän merkin oikealle puolelle.

Abbr(<Строка>) — Funktio leikkaa pois merkityksettömät merkit merkkijonon viimeisen merkitsevän merkin oikealta puolelta.

Keskiviikko(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) — Toiminto valitsee merkkijonon alkaen merkistä<НачальныйНомер>, kokonaismäärä<ЧислоСимволов>.

Vahvuus(<Строка>) — Funktio hakee rivillä olevien merkkien määrän.

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) — Funktio löytää kaikki haun alimerkkijonon esiintymät lähdemerkkijonosta ja korvaa sen korvaavalla alimerkkijonolla.

StrGetString(<Строка>, <НомерСтроки>) - Funktio saa monirivisen merkkijonon numeron mukaan.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) — Funktio laskee haun alimerkkijonon esiintymisten määrän lähdemerkkijonossa.

StrNumberRow(<Строка>) — Funktio laskee rivien määrän monirivisessä merkkijonossa. Monirivisessä merkkijonossa rivit erotetaan rivinvaihdolla.

Treg(<Строка>) — Funktio muuntaa merkkijonon otsikon kirjainkoon. Tämä tarkoittaa, että jokaisen sanan ensimmäinen merkki muunnetaan otsikon kirjainkokoisiksi kirjaimille tai isoiksi kirjaimille, jos otsikon kirjainkokoa ei ole määritetty merkille. Loput merkit muunnetaan pieniksi kirjaimiksi.

Kirjoita Konversiot
Tietotyyppien eksplisiittistä muuntamista varten on samannimiset funktiot sen tietotyypin kanssa, johon muunnos tapahtuu: String(<Значение>)

StringFromNumbers = Merkkijono(numero);

Kaikki nämä toiminnot on kuvattu yksityiskohtaisesti Syntax Assistantissa. Kuvasin artikkelissa kuinka Syntax Assistant voi auttaa aloittelevaa ohjelmoijaa.

Esimerkkejä merkkijonojen kanssa työskentelystä

Numeron muuntaminen merkkijonoksi ja takaisin.

Saat vuoden merkkijonoesityksen käyttämällä Muotoile-toimintoa.

Vuosi = muoto(NykyinenPvm(), "DF=yyyy" ) // Vuosi = "2012"

Jos haluat muuntaa luvun merkkijonoksi lisäämättä ryhmän erotinmerkkiä (rikkomatonta välilyöntiä), sinun on käytettävä Format-toimintoa parametrin NG=0 kanssa:

Numero = 2012 Rivi = Muoto(numero, "NH=0" ); //String = "2012"

Merkkijono Ei välilyöntejä.