itthon / Internet / 1c keresse meg a karakterlánc második előfordulását. Hasonló név ehhez: "Ivano%"

1c keresse meg a karakterlánc második előfordulását. Hasonló név ehhez: "Ivano%"

Sziasztok
Ma megkérték, hogy implementációs dokumentum nyomtatásánál ne jelenítsem meg a dokumentum előtagot, a következőképpen oldottam meg a problémát.

StrReplace(Szám, Lev(Szám, 3), "" );

Amikor belenéztem a szintaktikai asszisztensbe, annyira megtetszett, hogy írni akartam róla stringekkel dolgozik az 1C:Enterprise-ben.

Az 1C-ben szereplő karakterlánc primitív adattípusra utal.

Ha megnézi az 1C súgót, a következő leírást fogjuk látni a String típusról:
Az ilyen típusú értékek tetszőleges hosszúságú Unicode karakterláncot tartalmaznak.
Ha saját szavait használod a húrokról, akkor működni fog. A karakterlánc egy állandó, amely különböző karakterekből áll, mindig idézőjelekkel körülvéve.

Vonal beállítása
Üdvözlet = "Üdvözlöm utas";

A tipikus konfigurációkban a többsoros vonalakat leggyakrabban a „|” függőleges elválasztó használatával hozzák létre:
String = "Többsoros
|string
|írni
|szöveg";

A karakterláncon belüli idézőjelet dupla idézőjelek határozzák meg.
String = ""Szöveg idézőjelben"";

A karakterláncokon sok művelet van (keresés a karakterláncon belül, az elsők meghatározása stb.), jobb, ha megnézzük a Syntax Assistant-t.
Szintaxis segítő - Általános leírása beépített nyelv -> beépített függvények -> karakterláncokkal végzett munka függvényei.

Függvények a húrokkal való munkavégzéshez

Íme egy rövid összefoglaló a karakterláncokkal való munkavégzés funkcióiról:

VReg(<Строка>) — A függvény a karakterlánc összes karakterét nagybetűssé alakítja.

SymbolCode(<Строка>, <НомерСимвола>) – A függvény megkapja a megadott számú helyen lévő karakter kódját, amely a továbbított karakterláncban található.

Egy oroszlán(<Строка>, <ЧислоСимволов>) – A függvény kiválasztja a karakterlánc első bal oldali karaktereit.

Megtalálja(<Строка>, <ПодстрокаПоиска>) — A függvény a keresési karakterlánc előfordulását részstringként találja meg a forrás karakterláncban.

NReg(<Строка>) — A függvény a karakterlánc összes karakterét kisbetűvé alakítja.

Jobb(<Строка>, <ЧислоСимволов>) Ez a funkció abban különbözik a Left függvényektől, hogy a karakterlánc jobb oldaláról választja ki az utolsó karaktereket.

Üres sor (<Строка>) — A függvény ellenőrzi, hogy a karakterláncban vannak-e jelentős karakterek.

Szimbólum(<КодСимвола>) — A függvény a karakterkódot a karaktert tartalmazó sztringgé alakítja.

AbbrL(<Строка>) — A függvény levágja a jelentéktelen karaktereket a karakterlánc első jelentős karakterétől balra.

AbbrLP(<Строка>) — A függvény levágja a nem szignifikáns karaktereket a sor első jelentős karakterétől balra, és a szóközöket a sor utolsó jelentős karakterétől jobbra.

Rövidítés(<Строка>) — A függvény levágja a jelentéktelen karaktereket a karakterlánc utolsó jelentős karakterétől jobbra.

Szerda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) — A funkció kiválaszt egy karaktersorozatot, a karakterrel kezdve<НачальныйНомер>, teljes szám<ЧислоСимволов>.

Erősség(<Строка>) — A függvény lekéri a sorban lévő karakterek számát.

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

StrGetString(<Строка>, <НомерСтроки>) - A függvény többsoros karakterláncot kap szám szerint.

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

StrNumberRow(<Строка>) — A függvény megszámolja a többsoros karakterlánc sorainak számát. A többsoros karakterláncban a sorokat újsor választja el.

Treg(<Строка>) — A függvény a karakterláncot nagybetűvé alakítja. Ez azt jelenti, hogy minden szó első karakterét a rendszer átalakítja a cím nagybetűssé, vagy nagybetűssé, ha nincs megadva a karakterhez. A fennmaradó karakterek kisbetűvé alakulnak.

Írja be: Konverziók
Az adattípusok explicit konvertálásához azonos nevű függvények vannak azzal az adattípussal, amelyre az átalakítás történik: String(<Значение>)

StringFromNumbs = String(szám);

Mindezeket a funkciókat részletesen leírja a Syntax Assistant; a cikkben leírtam, hogyan segíthet a Syntax Assistant egy kezdő programozónak.

Példák húrokkal való munkára

Szám konvertálása karakterláncra és vissza.

Az év karakterlánc-ábrázolásához használja a Formátum funkciót.

Év = Formátum(JelenlegiDátum(), "DF=yyyy") // Év = "2012"

Szám karakterláncsá alakításához csoportelválasztó karakter beszúrása nélkül ( nem törő tér), alkalmaznia kell a Formátum függvényt a BH=0 paraméterrel:

Szám = 2012. sor = Formátum(szám, "NH=0" ); //String = "2012"

Karakterlánc Nincs szóköz.

Az 1C 8.3 sorai az 1C beépített nyelvben primitív típusú értékeket képviselnek Vonal. Az ilyen típusú értékek tetszőleges hosszúságú Unicode karakterláncot tartalmaznak. A karakterlánc típusú változók idézőjelek közé zárt karakterek halmaza.

Példa 1. Hozzunk létre egy karakterlánc-változót szöveggel.

StringVariable = "Szia világ!";

Függvények karakterláncokkal való munkavégzéshez 1s-ben 8.3

Ez a rész tartalmazza azokat a fő funkciókat, amelyek lehetővé teszik az 1c sorok megváltoztatását, vagy a bennük lévő információk elemzését.

Erősség

Erősség(<Строка>) . A paraméterként átadott karakterláncban található karakterek számát adja vissza.

2. példa. Számoljuk meg a karakterek számát a „Hello world!” sorban.

String = "Helló világ!"; Karakterek száma = StrLength(String); Jelentés(Számkarakterek);

A kód végrehajtásának eredménye a sorban lévő karakterek száma lesz: 11.

AbbrL

AbbrL(<Строка>) . A nem szignifikáns karaktereket a karakterlánc első jelentős karakterétől balra vágja.
Kisebb karakterek:

  • hely;
  • nem törő tér;
  • táblázatosítás;
  • kocsi vissza;
  • soros fordítás;
  • az űrlap (oldal) fordítása.

3. példa: Távolítson el minden szóközt a "világ!" sor bal oldaláról. és add hozzá a „Hello” sort.

String = Rövidítés("világ!"); String = "Hello"+String; Jelentés(String);

A kód végrehajtásának eredményeként megjelenik a „Hello world!” sor a képernyőn.

Rövidítve

Rövidítés(<Строка>) . A nem szignifikáns karaktereket levágja a karakterlánc első jelentős karakterétől jobbra.

Példa 4. Űrlap a „Helló” és a „béke!” sorokból. a „Hello world!” mondat.

Line = Rövidítés("Helló ")+" "+ Rövidítés("világ!"); Jelentés(String);

AbbrLP

AbbrLP(<Строка>) . Levágja a nem szignifikáns karaktereket a karakterlánc első jelentős karakterétől jobbra, és a nem jelentős karaktereket a karakterlánc első jelentős karakterétől balra. Ezt a funkciót gyakrabban használják, mint az előző kettőt, mivel univerzálisabb.

5. példa: Távolítsa el a jelentéktelen karaktereket a partner nevéből a bal és a jobb oldalon.

Counterparty = Könyvtárak. Counterparties.Find By Details("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

egy oroszlán

Egy oroszlán(<Строка>, <ЧислоСимволов>) . Lekéri a karakterlánc első karaktereit, a karakterek száma a paraméterben van megadva Karakterek száma.

6. példa Engedjük be a szerkezetet Munkavállaló tartalmazza az alkalmazott kereszt-, vezeték- és családnevét. Szerezzen be egy karakterláncot vezetéknévvel és kezdőbetűkkel.

NévInitial = Lev(Alkalmazott.Név, 1); Apanév kezdőbetűje = Oroszlán(Alkalmazott. Apanév, 1); FullName = Alkalmazott.Vezetéknév + " " + Keresztnév kezdeti + "." + Középső kezdőbetű + ".";

Jobb

Jobb(<Строка>, <ЧислоСимволов>) . Lekéri a karakterlánc utolsó karaktereit, a paraméterben megadott számú karaktert Karakterek száma. Ha a megadott számú karakter meghaladja a karakterlánc hosszát, akkor a teljes karakterláncot a rendszer visszaadja.

7. példa: Írjon egy dátumot „ééééhhnn” formátumban egy karakterláncváltozó végére, szerezzen be egy karakterláncot a dátummal, és alakítsa át típussá dátum.

Karakterlánc = " Az aktuális dátum: 20170910"; StringDate = Jogok(String, 8); Date = Date(StringDate);

szerda

Szerda(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Lekér egy részkarakterláncot a paraméterként átadott karakterláncból Vonal, attól a karaktertől kezdve, amelynek száma a paraméterben van megadva InitialNumberés a paraméterbe átadott hossz Karakterek száma. A sorban lévő karakterek számozása 1-től kezdődik. Ha a paraméterben InitialNumber nullánál kisebb vagy azzal egyenlő érték van megadva, akkor a paraméter az 1 értéket veszi fel. Ha a paraméter Karakterek száma nincs megadva, akkor a sor végéig tartó karakterek kerülnek kiválasztásra.

Példa 8. Hagyja, hogy a kilencedik pozíciótól induló karakterlánc-változó tartalmazza a régiókódot, ezt kell beszerezni és külön sorba írni.

String = "Régió: 99 Moszkva"; Régió = Átlag(karakterlánc, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Megkeresi a megadott részkarakterláncot egy karakterláncban, és a talált részkarakterlánc első karakterének pozíciószámát adja vissza. Nézzük meg ennek a függvénynek a paramétereit:

  • Vonal. Forrás karakterlánc;
  • Alkarakterlánc keresése. Keresés részstring;
  • Keresési irány. Megadja a karakterláncban lévő részkarakterlánc keresésének irányát. Értékeket vehet fel:
    • Keresési irány. Kezdettől;
    • Search.End Direction;
  • Kezdő pozíció. Megadja azt a pozíciót a karakterláncban, ahol a keresés kezdődik;
  • Előfordulások száma. Megadja a keresett részkarakterlánc előfordulási számát a forráskarakterláncban.

9. példa A „Hello world!” sorban. Határozza meg az "és" karakter utolsó előfordulásának helyét.

PositionNumber = StrFind("Szervusz világ!", "és", SearchDirection.End); Jelentés(Pozíciószám);

A kód végrehajtásának eredményeként megjelenik az „és” szimbólum utolsó előfordulásának száma: 9.

VReg

VReg(<Строка>) . Az 1s8-ban megadott karakterlánc összes karakterét nagybetűvé alakítja.

10. példa: Alakítsa át a "hello world!" karakterláncot. nagybetűsre.

StringVreg = VReg("helló világ!"); Jelentés(StringVreg);

A kód végrehajtásának eredményeként megjelenik a „HELLO WORLD!” sor.

NReg

NReg(<Строка>) . A megadott karakterlánc összes karakterét 1s 8-ban kisbetűvé alakítja.

11. példa: Alakítsa át a "HELLO WORLD!" kisbetűsre.

StringNreg = NReg("HELLO VILÁG!"); Jelentés(StringVreg);

A kód végrehajtásának eredményeként megjelenik a „hello world!” sor.

Treg

Treg(<Строка>) . A karakterláncot a következőképpen alakítja át: minden szó első karakterét nagybetűvé, a szó többi karakterét kisbetűvé alakítja.

12. példa: Írd nagybetűvel a „hello world!” sorban lévő szavak első betűit.

StringTreg = TReg("helló világ!"); Jelentés(StringTreg);

A kód végrehajtásának eredményeként megjelenik a „Hello World!” sor.

Szimbólum

Szimbólum(<КодСимвола>) . Unicod kódja alapján kap egy karaktert.

13. példa: Adjon hozzá bal és jobb oldalt a „Hello World!” sorhoz. szimbólum ★

StringWithStars = Szimbólum("9733")+"Helló világ!"+Szimbólum("9733"); Jelentés(StringWithStars);

A kód végrehajtásának eredményeként megjelenik a „★ Hello World!★” sor.

Szimbólum kód

SymbolCode(<Строка>, <НомерСимвола>) . A Unicode karakterkódot az első paraméterben megadott karakterláncból kéri le, amely a második paraméterben megadott helyen található.

14. példa: Keresse meg a „Hello World!” sor utolsó karakterének kódját.

String = "Hello World!"; KarakterKód = KarakterKód(karakterlánc, StrLength(String)); Értesítés (Karakterkód);

A kód végrehajtásának eredményeként megjelenik a „!” szimbólumkód. - 33.

Üres sor

Üres sor (<Строка>) . Ellenőrzi, hogy a karakterlánc csak jelentéktelen karakterekből áll-e, azaz üres-e.

15. példa Ellenőrizze, hogy egy három szóközből álló karakterlánc üres-e.

Empty = EmptyString(" "); Jelentés(Üres);

A kód végrehajtásának eredményeként megjelenik az „Igen” szó (egy logikai értékű karakterlánc kifejezés Igaz).

Oldalcsere

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.

16. példa A „Hello World!” sorban. cserélje ki a „béke” szót a „barátok” szóra.

String = StrReplace("Hello World!", "World", "Barátok"); Jelentés(karakterlánc);

A kód végrehajtásának eredményeként megjelenik a „Hello Friends!” sor.

StrNumberLines

StrNumberRow(<Строка>) . Lehetővé teszi egy többsoros karakterláncban lévő sorok számának megszámlálását. Menni új sor 1s 8-ban a szimbólumot használják PS(újsor karakter).

17. példa Határozza meg a sorok számát a szövegben:
"Első sor
Második sor
Harmadik sor"

Number = StrNumberString("Első sor"+Karakterek.PS +"Második sor"+Szimbólumok.PS +"Harmadik sor"); Jelentés(szám);

A kód végrehajtásának eredménye a sorok számának megjelenítése a szövegben: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . A többsoros karakterláncban lévő sort a száma alapján kapja meg. A sorszámozás 1-től kezdődik.

18. példa: Szerezze be a szöveg utolsó sorát:
"Első sor
Második sor
Harmadik sor"

Szöveg = "Első sor" + Szimbólumok. PS + "Második sor" + Szimbólumok. PS + "Harmadik sor"; UtolsóRow = StrGetRow(Szöveg, StrNumberLines(Szöveg)); Jelentés(LastLine);

A kód végrehajtásának eredménye a „Harmadik sor” sor megjelenítése lesz.

PageNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . A megadott részkarakterlánc előfordulásának számát adja vissza egy karakterláncban. A funkció megkülönbözteti a kis- és nagybetűket.

19. példa Határozza meg, hányszor jelenik meg a „c” betű a „Lines in 1s 8.3 and 8.2” sorban, függetlenül a kis- és nagybetűtől.

Line = "Sorok az 1s 8.3-ban és 8.2-ben"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "C"); Jelentés(Előfordulások száma);

A kód végrehajtásának eredménye az előfordulások számának kijelzése lesz: 2.

PageStartsWith

StrStartsWith(<Строка>, <СтрокаПоиска>) . Ellenőrzi, hogy az első paraméterben átadott karakterlánc a második paraméterben szereplő karakterlánccal kezdődik-e.

20. példa Határozza meg, hogy a kiválasztott partner TIN-je 1-gyel kezdődik-e. Engedje meg a változót Ügyfél Ügyfelek.

TIN = Partner.TIN; StartsUNits = StrStartsWith(TIN, "1"); If Egységekkel kezdődik Then //Az Ön kódja EndIf;

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . Ellenőrzi, hogy az első paraméterben átadott karakterlánc a második paraméterben lévő karakterláncra végződik-e.

21. példa Határozza meg, hogy a kiválasztott partner TIN-je 2-re végződjön-e. Hagyja be a változót Ügyfél egy címtárelemre való hivatkozás kerül tárolásra Ügyfelek.

TIN = Partner.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Az Ön kódja EndIf;

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Egy karakterláncot részekre bont a megadott határoló karakterek használatával, és a kapott karakterláncokat egy tömbbe írja. Az első paraméter a forrás karakterláncot tárolja, a második a határolót tartalmazó karakterláncot, a harmadik pedig azt jelzi, hogy kell-e üres karakterláncokat írni a tömbbe (alapértelmezés szerint Igaz).

22. példa. Legyen egy karakterláncunk, amely számokat tartalmaz „;” szimbólummal elválasztva, és kapjunk egy számtömböt a karakterláncból.

Karakterlánc = "1; 2; 3"; Tömb = StrDivide(karakterlánc, ";"); For Count = 0 by Array.Quantity() - 1 Cycle Attempt Array[Count] = Szám(AbbrLP(Tömb[Szám])); Kivételtömb[Sch] = 0; EndAttemptsEndCycle;

A végrehajtás eredményeként egy 1-től 3-ig terjedő számokat tartalmazó tömb keletkezik.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Az első paraméterből álló karakterláncok tömbjét olyan karakterláncgá alakítja, amely a második paraméterben megadott határolóval elválasztva a tömb összes elemét tartalmazza.

23. példa: Az előző példa számtömbjének felhasználásával kapja meg az eredeti karakterláncot.

For Account = 0 By Array.Quantity() - 1 Cycle Tömb[Act] = String(Tömb[Act]); EndCycle; Sor = StrConnect(tömb, "; ");

Kevés mechanizmus létezik a karakterláncokkal való munkavégzésre az 1C lekérdezésekben. Először is hozzá lehet adni a sorokat. Másodszor, kivehet egy részkarakterláncot egy karakterláncból. Harmadszor, a karakterláncok összehasonlíthatók, beleértve a mintákat is. Valószínűleg ez minden, amit a húrokkal meg lehet tenni.

Húr kiegészítés

Sorok hozzáadásához a lekérdezéshez a „+” műveletet kell használni. Csak korlátozott hosszúságú karakterláncokat adhat hozzá.

SELECT "Név: " + Partnerek. Név AS 1. oszlop FROM Címtárból. Partnerek AS Partnerek WHERE Partnerek. Link = &Link

Substring függvény

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

Az Environment() függvény analógja az objektummodellből. A Substring() függvény karakterláncadatokra alkalmazható, és lehetővé teszi egy töredék kiválasztását <Строки> , kezdve a karakter számával <НачальнаяПозиция> (a sorban lévő karakterek 1-től kezdődően vannak számozva) és hossza <Длина> karakterek. A függvényszámítás eredménye változó hosszúságú karakterlánc típusú, és a hossza 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 egy karakterlánc attribútum megfelel bizonyos feltételeknek, összehasonlítjuk:

SELECT Counterparts. Name AS 1. oszlop FROM Címtár. Partnerek AS Partnerfelek WHERE Partnerek Név = "Gazprom"

De mi van, ha finomabb összehasonlításra van szüksége? Nem csak egyenlőség vagy egyenlőtlenség, hanem egy bizonyos mintához való hasonlóság? A HASONLÓ függvény pontosan erre készült.

LIKE – Operátor egy karakterlánc mintához való hasonlóságának ellenőrzésére. A LIKE analógja SQL-ben.

A HASONLÓ operátor lehetővé teszi a tőle balra megadott kifejezés értékének összehasonlítását a jobb oldalon megadott minta karakterlánccal. A kifejezés értékének string típusúnak kell lennie. Ha a kifejezés értéke megegyezik a mintával, 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 önkényes karakter;
  • […] (egy vagy több karakter szögletes zárójelben): bármely, a szögletes zárójelben szereplő karakter. A felsorolás tartalmazhat tartományokat, például a-z, ami egy tetszőleges karaktert jelent a tartományban, 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 közül egyet önmagának kell írni, akkor ezt meg kell előznie<Спецсимвол>. Magamat<Спецсимвол>(bármely megfelelő szimbólum) után ugyanabban az utasításban van definiálva kulcsszó KÜLÖNLEGES SZIMBÓLUM.