A Looking Glass jegyzetei

2014.08.18. Új funkciók a karakterláncokkal való munkához

Megvalósítva a 8.3.6.1977 verzióban.

Bővítettük a karakterláncokkal való munkavégzés funkcióinak körét. Ezt annak érdekében tettük, hogy fejlettebb eszközöket biztosítsunk a karakterlánc-adatok elemzéséhez. Az új funkciók kényelmesek és hasznosak lesznek a szövegelemzés technológiai feladataiban. A formázott formában adatokat tartalmazó szöveg elemzésével kapcsolatos feladatokban. Ez lehet a berendezéstől kapott egyes fájlok elemzése, vagy például egy technológiai napló elemzése.

Az új funkciók által végrehajtott összes műveletet korábban is elvégezhette. Beágyazott nyelven írt többé-kevésbé bonyolult algoritmusok segítségével. Ezért az új funkciók nem adnak alapvetően új lehetőségeket. Lehetővé teszik azonban a kód mennyiségének csökkentését, egyszerűbbé és érthetőbbé teszik a kódot. Ezenkívül lehetővé teszik a műveletek végrehajtásának felgyorsítását. Mert a platformban megvalósított funkciók természetesen gyorsabban működnek, mint egy hasonló, a beépített nyelven írt algoritmus.

Formázási függvény StrTemplate()

Ez a függvény a paramétereket karakterláncba helyettesíti. Ilyen átalakítás szükségessége gyakran felmerül, például figyelmeztető üzenetek megjelenítésekor. Ennek a függvénynek a szintaxisa a következő:

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

<Шаблон>az a karakterlánc, amelyben a paraméterreprezentációkat helyettesíteni kell.

<Значение1> , ... <Значение10>- ezek azok a paraméterek (maximum - tíz), amelyek reprezentációit be kell cserélni a karakterláncba.

Egy adott hely megadásához a sablonban, ahol a helyettesítést el kívánja végezni, %1, ... %10 formátumú jelölőket kell használnia. A sablonban szereplő markerek számának és az értékeket tartalmazó paraméterek számának meg kell egyeznie.

Például egy ilyen operátor végrehajtásának eredménye:

lesz egy sor:

Adathiba a 2. sorban (dátumtípus szükséges)

String függvény StrCompare()

Ez a függvény két karakterláncot a kis- és nagybetűk megkülönböztetésével hasonlít össze. Például így:

Ugyanezt a műveletet elvégezheti az objektum használata előtt Értékek összehasonlítása:

Az új funkció használata azonban egyszerűbbnek tűnik. És ezen kívül egy függvény, ellentétben egy objektummal Értékek összehasonlítása, működik vékony kliensés a webes kliensben.

String függvények StrBeginsC(), StrEndsTo()

Ezek a függvények határozzák meg, hogy egy karakterlánc egy megadott részkarakterlánccal kezdődik-e, vagy egy karakterlánc egy megadott részkarakterlánccal végződjön. Ezeknek a függvényeknek az algoritmusát nem nehéz beépített nyelven megvalósítani, de jelenlétükkel tisztább és érthetőbb kódokat írhatunk. És gyorsabban dolgoznak.

Például kényelmes használni őket az operátorban Ha egy:

Függvények a StrSplit(), StrJoin() karakterláncokkal való munkához

Ezek a függvények a karakterláncot részekre osztják a megadott határolónak megfelelően. Vagy fordítva, több sort egyesítenek egybe, beillesztve közéjük a kiválasztott elválasztót. Kényelmesek naplók, technológiai naplók létrehozásához vagy elemzéséhez. Például egy technológiai naplóbejegyzést egyszerűen szétszedhet további elemzésre alkalmas részekre:

StrFind() karakterláncokkal végzett munka függvénye

A régi funkció helyett Megtalálja() megvalósítottuk új funkció, amely további funkciókkal rendelkezik:

  • Keresés különböző irányokba (az elejétől, a végétől);
  • Keresés a megadott pozícióból;
  • Keressen egy előfordulást a megadott számmal (második, harmadik stb.).

Valójában megkettőzi a régi funkció képességeit. Ez a régebbi verziókban lefordított modulokkal való kompatibilitás fenntartása érdekében történik. régi funkció Megtalálja() nem ajánlott újra használni.

Az alábbiakban egy példa látható az új keresési lehetőségek használatára. A visszafelé keresés akkor hasznos, ha egy formalizált karakterlánc utolsó darabjára van szüksége, például egy URL-ben lévő fájl teljes nevére. A megadott pozícióból való keresés pedig segít azokban az esetekben, amikor egy ismert töredékben kell keresni, nem pedig a teljes karakterláncban.

A String típus minden programozási nyelvben megtalálható. Primitív, és az 1C-ben sok funkció van a vele való munkához. Ebben a cikkben közelebbről megvizsgáljuk különböző módokon dolgozzon a karakterlánctípusokkal az 1C 8.3 és 8.2 példákban.

Vonal

Bármilyen típusú változó karakterláncsá konvertálásához létezik az azonos nevű "String ()" függvény. A bemeneti paraméter maga a változó lesz, amelynek karakterlánc-reprezentációját kell megkapni.

String(False) // "Nem"-et ad vissza
String(12345) // „12 345”-et ad vissza
Karakterlánc(AktuálisDátum()) //"2017.07.21. 11:55:36"

Nemcsak primitív típusok, hanem egyéb, például könyvtárak és dokumentumok elemei is karakterláncsá konvertálhatók.

Rövidítve LP, rövidítve L, rövidítve P

Mint bemeneti paraméterek ezen függvények közül egy karakterlánc típusú változó. A függvények eltávolítják a jelentéktelen karaktereket (szóközök, kocsivisszaadások stb.): bal és jobb oldalról, csak balról, illetve csak jobbról.

abbrl("A kétoldali szóközök el lesznek távolítva") // "A kétoldali szóközök el lesznek távolítva"
abbr("A kétoldali szóközök el lesznek távolítva") // "A bal oldali szóközök el lesznek távolítva"
abbr(" A két oldalon lévő szóközök el lesznek távolítva ") // "A jobb oldali szóközök el lesznek távolítva"

Leo, jobbra, középen

Ezek a függvények lehetővé teszik egy karakterlánc egy részének levágását. A Lion() függvény a karakterlánc bal oldalán lévő, megadott hosszúságú részét adja vissza. A "Right()" függvény hasonló, de a vágás a jobb oldalon történik. A "Sze()" függvény lehetővé teszi annak a karakterszámnak a meghatározását, amelyből a karakterláncot kiválasztja, és annak hosszát.

Lion("String változó", 4) // a "Stro" értéket adja vissza
Right("String változó", 7) // a "változót" adja vissza
avg("String változó", 2, 5)// a "troco"-t adja vissza

Erősség

A függvény határozza meg a karakterlánc változóban található karakterek számát.

StrLength("Word") // a végrehajtás eredménye 5 lesz

megtalálja

A függvény lehetővé teszi a karakterlánc egy részének keresését egy karakterlánc változóban. A visszatérési érték egy szám lesz, amely a talált karakterlánc elejének pozícióját jelzi. Ha nem található egyezés, nullát ad vissza.

Vegye figyelembe, hogy a keresés megkülönbözteti a kis- és nagybetűket. Ha a keresési részkarakterlánc egynél több előfordulása van az eredeti karakterláncban, a függvény az első előfordulás elejét adja vissza.

Find("egy, kettő, egy, kettő, három", "kettő") // a függvény a 6-os számot adja vissza

Üres sor

Ennek a függvénynek a használata lehetővé teszi annak meghatározását, hogy egy karakterlánc üres-e. A jelentéktelen karaktereket, például a szóközt, a kocsi visszatérését és másokat a rendszer nem veszi figyelembe.

EmptyString("Vasily Ivanovich Pupkin") // a függvény False értéket ad vissza
EmptyString(" ") // a függvény True értéket ad vissza

VReg, NReg, TReg

Ezek a függvények nagyon hasznosak a karakterlánc-változók összehasonlításakor és konvertálásakor. A "Vreg()" visszaadja az eredeti karakterláncot nagybetűvel, a "HReg()" kisbetűvel, a "TReg()" pedig úgy formázza vissza, hogy minden egyes szó első karaktere nagybetűs legyen, és minden további karakter kisbetűs legyen.

VReg("GENERAL DIRECTOR") // visszatérési érték - "GENERAL DIRECTOR"
HReg("GENERAL DIRECTOR") // visszatérési érték - "CEO"
TReg("GENERAL IRECTOR") // visszatérési érték - "General Director"

StrReplace

Ez a funkció analóg a behelyettesítéssel szövegszerkesztők. Lehetővé teszi, hogy egy karaktert vagy karakterkészletet helyettesítsen egy másikkal a karakterlánc-változókban.

StrReplace("piros, fehér, sárga", ",", ";") // "piros; fehér; sárga"

StrNumberRows

A függvény lehetővé teszi, hogy meghatározza a kocsivisszajelzéssel elválasztott sorok számát egy szöveges változóban.

Az alábbi példában a hurok három körön megy keresztül, mert az StrNumberRows függvény a 3-as értéket adja vissza:

Ind \u003d 1, StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") hurok
<тело цикла>
EndCycle;

StrGetString

Ez a funkció ugyanúgy működik többsoros szöveggel, mint az előző. Lehetővé teszi, hogy egy szöveges változóból egy adott karakterláncot kapjon.

StrGetString("Karakterlánc1" + Szimbólumok.PS + "Karakterlánc2" + Szimbólumok.PS + "Karakterlánc3", 2) // "Line2"-t adja vissza

StrNumberOccurrences

A függvény megszámolja egy karakter vagy részkarakterlánc előfordulásának számát a keresett karakterláncban.

StrNumberInstallations("a;b;c;d; ", ";") // a függvény a 4-es számot adja vissza

Szimbólum és SymbolCode

Ezek a függvények lehetővé teszik, hogy egy karaktert Unicode kódja alapján kapjon meg, valamint maga a karakter határozza meg ezt a kódot.

SymbolCode("A") // a függvény az 1 040 számot adja vissza
SymbolCode(1040) // a függvény "A"-t ad vissza

Gyakori feladatok húrokkal való munka során

Karakterlánc összefűzése

Több karakterlánc összefűzéséhez (összefűzéséhez) egyszerűen használja az összeadás operátort.

"1. sor" + "2. sor" //két sor hozzáadásának eredménye "1. sor 2. sor"

Típus konverzió

Ahhoz, hogy egy típust karakterláncsá alakítsunk, például egy szótári elemre való hivatkozást, egy számot stb., elegendő a „String ()” függvény használata. Az olyan függvények, mint a "ShortLP()" szintén karakterláncokká alakítják a változókat, de azonnal levágják a jelentéktelen karaktereket.

String(1000) // az "1000" értéket adja vissza

Kérjük, vegye figyelembe, hogy egy szám karakterláncsá alakításakor a program automatikusan hozzáad egy szóközt, amely elválasztja az ezret. Ennek elkerülése érdekében a következő struktúrákat használhatja:

StrReplace(String(1000),Karakterek.NPP,"") // az "1000" értéket adja vissza

String(Format(1000,"CH=")) // értéke "1000"

Idézetek egy karakterláncban

Gyakran meg kell küzdenie azzal, hogy egy karakterlánc-változóba idézőjeleket kell tenni. Ez lehet a konfigurátorban írt kérés szövege, vagy csak egy változó. A probléma megoldásához mindössze két idézőjel karaktert kell beállítania.

Header = String("A Horns and Hooves LLC mi vagyunk!") // visszatér a "Roga and Hooves LLC mi vagyunk!"

Többsoros, sortörés

Többsoros szöveg létrehozásához elegendő sortörés karaktereket (Symbols.PS) hozzáadni.

MultilineText = "Első sor" + Karakterek.PS + "Második sor"

Hogyan távolítsuk el a szóközöket

A jobb vagy bal oldali szóközök eltávolításához használhatja a "Stretch()" (valamint a "Scrpt()" és "ScreenP()") függvényt:

StringWithoutSpaces = ShortLP(" Sok betű ") // a függvény a "Sok betű" értéket adja vissza

Ha egy szám karakterláncsá alakítása után el kell távolítania a nem törő szóközöket, használja a következő konstrukciót:

StringWithoutSpaces = StrReplace(String(99999),Karakterek.NPP,"") // "99999"-et adja vissza

Ezenkívül a programozók gyakran használják a következő konstrukciót, amely lehetővé teszi a szöveges változó minden szóközének eltávolítását vagy helyettesítését egy másik karakterrel:

StringWithoutSpaces = StrReplace(" hello", " " ,"") // a "hello" kifejezést adja vissza

A húrok összehasonlítása egymással

Összehasonlíthatja a kifejezéseket a szokásos egyenlőségjellel. Az összehasonlítás megkülönbözteti a kis- és nagybetűket.

"hello" = "hello" // hamis értéket ad vissza
"Hello" = "Hello" // True értékkel tér vissza
"Hello" = "Viszlát" // a False értéket adja vissza

Kevés mechanizmus létezik a karakterláncokkal való munkavégzésre az 1C lekérdezésekben. Először is hozzá lehet adni karakterláncokat. Másodszor, egy részkarakterlánc kivehető egy karakterláncból. Harmadszor, a karakterláncok összehasonlíthatók, beleértve a mintákat is. Körülbelül ennyit tehetsz a húrokkal.

Húr kiegészítés

A "+" operátor karakterláncok hozzáadására szolgál a lekérdezésben. Csak korlátozott hosszúságú karakterláncokat adhat hozzá.

SELECT "Név: " + Vállalkozók.Név AS Oszlop1 FROM Directory.Contractors AS Vállalkozók WHERE Contractors.Reference = &Referencia

Alkarakterlánc funkció

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

Az Environment() függvény analógja tárgymodell. A Substring() függvény karakterlánc típusú adatokra alkalmazható, és lehetővé teszi egy töredék kiválasztását <Строки> , szám karakterrel kezdődik <НачальнаяПозиция> (a karakterlánc karakterei 1-től vannak számozva) és hossza <Длина> karakterek. A függvényértékelés eredménye változó hosszúságú karakterlánc típusú, és a hossz korlátlannak számít, ha <Строка> korlátlan hossza és paramétere van <Длина> nem állandó és nem nagyobb, mint 1024.

Ha a karakterlánc hossza kisebb, mint a második paraméterben megadott, akkor a függvény üres karakterláncot ad vissza.

Figyelem! A SUBSTRING() függvény használata a korlátlan hosszúságú karakterláncok korlátozott hosszúságú karakterláncokká alakításához nem ajánlott. Ehelyett jobb az EXPRESS() cast operátort használni.

Funkció hasonló

Ha meg kell győződnünk arról, hogy a string attribútum megfelel bizonyos feltételeknek, összehasonlítjuk:

SELECT Counterparties.Name AS Column1 FROM Directory.Counterparties AS Counterparts WHERE Counterparties.Name = "Gazprom"

De mi van akkor, ha finomabb összehasonlításra van szükség? Nem csak az egyenlőségért vagy az egyenlőtlenségért, hanem egy bizonyos mintához való hasonlóságért? Pontosan erre jött létre a LIKE funkció.

LIKE – Operátor, amely ellenőrzi, hogy egy karakterlánc hasonló-e egy mintához. A LIKE analógja SQL-ben.

A LIKE operátor lehetővé teszi a tőle balra megadott kifejezés értékének összehasonlítását a jobb oldalon megadott sablon karakterlánccal. A kifejezés értékének karakterlánc típusúnak kell lennie. Ha a kifejezés értéke megegyezik a sablonnal, akkor az operátor eredménye TRUE, ellenkező esetben HAMIS.

A sablon karakterláncának következő karakterei szolgáltatáskarakterek, és jelentésük eltér a karakterlánc karakterétől:

  • % (százalék): tetszőleges számú karaktert tartalmazó sorozat;
  • _ (aláhúzás): egy tetszőleges karakter;
  • […] (egy vagy több karakter szögletes zárójelben): bármely, szögletes zárójelben szereplő karakter. A felsorolás tartalmazhat tartományokat, például a-z, ami a tartományon belül bármely karaktert jelent, beleértve a tartomány végeit is;
  • [^…] (szögletes zárójelben egy tagadójel, amelyet egy vagy több karakter követ): Bármely egyedi karakter, kivéve a tagadójel után felsoroltakat.

Minden más szimbólum önmagát jelenti, és nem hordoz semmilyen további terhelést. Ha a felsorolt ​​karakterek valamelyikét önmagának kell írni, akkor ezt meg kell előznie<Спецсимвол>. Magamat<Спецсимвол>(bármely megfelelő karakter) után ugyanabban az utasításban van definiálva kulcsszó KÜLÖNLEGES SZIMBÓLUM.

A string az egyik primitív adattípus az 1C:Enterprise 8 rendszerekben. Típusú változók vonal szöveget tartalmaznak.

Változóértékek típusa vonal benne van dupla idézőjelek. Több változó ebből a típusbólösszecsukható.

Per1 = "1. szó" ;
Per2 = "2. szó" ;
Per3 = Per1 + " " + Per2 ;

Végül is Per3 számítani fog" Szó 1 Szó 2″.

Ezenkívül az 1C:Enterprise 8 rendszerek funkciókat biztosítanak a karakterláncokkal való munkavégzéshez. Fontolja meg a főbbeket:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — a függvény célja egy párbeszédpanel megjelenítése, amelyben a felhasználó megadhat egy értéket típusú változó Vonal. Paraméter <Строка> kötelező, és tartalmazza annak a változónak a nevét, amelybe a beírt karakterláncot írjuk. Paraméter <Подсказка> opcionális a párbeszédpanel címe. Paraméter <Длина> opcionális, a bemeneti karakterlánc maximális hosszát jelzi. Az alapértelmezett nulla, ami korlátlan hosszúságot jelent. Paraméter <Многострочность> választható. Meghatározza a beviteli módot többsoros szöveg: Igaz - többsoros szöveg bevitele sorelválasztókkal; False – Írjon be egy egyszerű karakterláncot.

Egy karakterlánc beírható, és a Unicode karakterkód ismeretében:

Szimbólum(<КодСимвола>) — A kód számként kerül beírásra.

Letter= Symbol(1103 ) ; // I

Van még inverz függvény, amely lehetővé teszi egy karakter kódjának kiderítését.

SymbolCode(<Строка>, <НомерСимвола>) — A megadott karakter Unicode-számát adja vissza számként.

Kis- és nagybetűk átalakító funkciói:

VReg(<Строка>) - átalakítja a karakterlánc összes karakterét nagybetűs.

HReg(<Строка>) - A karakterlánc összes karakterét kisbetűvé alakítja.

Treg(<Строка>) - a karakterlánc összes karakterét nagybetűvé alakítja. Vagyis az összes szó első betűit nagybetűvé, a többi betűt kisbetűvé alakítja.

Karakterek keresésének és cseréjének függvényei egy karakterláncban:

Megtalálja(<Строка>, <ПодстрокаПоиска>) - megkeresi a keresési részstring előfordulásának karakterszámát. Például:

Find ("String" , "eye" ) ; // négy

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — megkeresi a keresési részstring előfordulásának karakterszámát, az előfordulási szám a megfelelő paraméterben van megadva. Ebben az esetben a keresés attól a karaktertől indul, amelynek száma a paraméterben van megadva Kezdőpozíció. A keresés a karakterlánc elejétől vagy végétől lehetséges. Például:

Number4 Entry= StrFind( "védekezés", "o" , Keresési irány. Először 1 , 4 ); 7

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) Megkeresi a keresési részkarakterlánc összes előfordulását a forráskarakterláncban, és lecseréli a helyettesítő karakterláncra.

StrReplace("String" , "szem" , "" ) ; // Oldal

Üres sor (<Строка>) - ellenőrzi, hogy a karakterláncban vannak-e jelentős karakterek. Ha nincsenek jelentős karakterek, vagy egyáltalán nincsenek karakterek, akkor a rendszer az értéket adja vissza Igaz. Másképp - Hazugság.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – kiszámítja a keresési részkarakterlánc előfordulásának számát a forráskarakterláncban.

StrNumberOccurrences ( "Tanulj, tanulj és tanulj újra", "tanulni" , "" ) ; 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — számmal helyettesíti a paramétereket a karakterláncban. A karakterláncnak tartalmaznia kell a következő formátumú helyettesítési jelzőket: "%1..%N". A markerek számozása 1-től kezdődik. Ha a paraméter értéke Meghatározatlan, az üres karakterlánc behelyettesítésre kerül.

StrPattern ( "1. lehetőség = %1, 2. lehetőség = %2", "1" , "2" ) ; // 1. paraméter = 1, 2. paraméter = 2

String konverziós függvények:

Egy oroszlán(<Строка>, <ЧислоСимволов>) visszaadja a karakterlánc első karaktereit.

Jobb(<Строка>, <ЧислоСимволов>) - a karakterlánc utolsó karaktereit adja vissza.

Szerda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - egy hosszúságú karakterláncot ad vissza<ЧислоСимволов>karakterrel kezdve<НачальныйНомер>.

rövid(<Строка>) levágja a jelentéktelen karaktereket az elsőtől balra jelentős karakter Sorban.

rövidítés(<Строка>) - levágja a jelentéktelen karaktereket a karakterlánc utolsó jelentős karakterétől jobbra.

Abbrl(<Строка>) - levágja a nem szignifikáns karaktereket a karakterlánc első jelentős karakterétől balra és a karakterlánc utolsó jelentős karakterétől jobbra.

StrGetString(<Строка>, <НомерСтроки>) – szám szerint lekéri a többsoros karakterlánc sztringjét.

Más funkciók:

Erősség(<Строка>) - a karakterláncban lévő karakterek számát adja vissza.

StrNumber of Lines(<Строка>) - egy többsoros karakterlánc sorainak számát adja vissza. Egy sor akkor tekinthető újnak, ha újsor karakter választja el az előző sortól.

StrCompare(<Строка1>, <Строка2> ) - érzéketlenül hasonlít össze két karakterlánc kis- és nagybetűket. A függvény objektumként működik Értékek összehasonlítása. Visszaküldés:

  • 1 - ha az első sor nagyobb, mint a második
  • -1 - ha a második sor nagyobb, mint az első
  • 0 - ha a karakterláncok egyenlőek

StrCompare("Első sor" , "Második sor" ) ; // egy