Implementováno ve verzi 8.3.6.1977.

Rozšířili jsme sadu funkcí pro práci s řetězci. Udělali jsme to, abychom vám poskytli pokročilejší nástroje pro analýzu dat řetězce. Nové funkce budou pohodlné a užitečné v technologických úkolech textové analýzy. V úlohách souvisejících s analýzou textu, který obsahuje formátovaná data. Může to být analýza některých souborů přijatých ze zařízení nebo například analýza technologického protokolu.

Všechny akce, které provádějí nové funkce, jste mohli provést dříve. S pomocí více či méně složitých algoritmů napsaných ve vloženém jazyce. Nové funkce vám proto nedávají žádné zásadně nové možnosti. Mohou však snížit množství kódu, učinit kód jednodušším a srozumitelnějším. A kromě toho vám umožňují urychlit provádění akcí. Protože funkce implementované v platformě fungují samozřejmě rychleji než podobný algoritmus napsaný ve vloženém jazyce.

Funkce formátování StrPattern ()

Tato funkce nahrazuje parametry do řetězce. Potřeba takového převodu často vyvstává například při zobrazování varovných zpráv. Syntaxe této funkce je následující:

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

<Шаблон> je řetězec, který má nahradit reprezentace parametrů.

<Значение1> , ... <Значение10> - to jsou parametry (maximálně - deset), jejichž reprezentace musí být do řetězce nahrazeny.

Chcete-li v šabloně označit konkrétní místo, kde chcete provést substituci, musíte použít značky jako% 1, ...% 10. Počet značek použitých v šabloně a počet parametrů obsahujících hodnoty se musí shodovat.

Například výsledek provedení takového prohlášení:

tam bude řádek:

Chyba dat na řádku 2 (je vyžadován typ data)

Funkce pro práci s řetězci StrCompare ()

Tato funkce porovnává dva řetězce způsobem, který nerozlišuje velká a malá písmena. Například takto:

Stejnou akci jste mohli provést dříve pomocí objektu Porovnání hodnot:

Použití nové funkce však vypadá jednodušší. Kromě toho funkce, na rozdíl od objektu Srovnání hodnot, funguje jak v tenkém klientovi, tak ve webovém klientovi.

Funkce pro práci s řetězci RowStart With (), RREnd With ()

Tyto funkce určují, zda řetězec začíná zadaným podřetězcem nebo končí zadaným podřetězcem. Algoritmus těchto funkcí je snadné implementovat ve vloženém jazyce, ale jejich přítomnost vám umožňuje psát čistší a srozumitelnější kód. A fungují rychleji.

Například je vhodné je použít v If:

Funkce pro práci s řetězci StrSplit (), StrConnect ()

Tyto funkce rozdělují řetězec na části podle zadaného oddělovače. Nebo naopak spojí několik řádků do jednoho a vloží mezi ně vybraný oddělovač. Jsou vhodné pro vytváření nebo analýzu protokolů, technologických protokolů. Například můžete snadno rozložit záznam technologického protokolu na části vhodné pro další analýzu:

Funkce pro práci s řetězci StrFind ()

Místo staré funkce Find () jsme implementovali novou funkci, která má další funkce:

  • Hledání v různých směrech (od začátku, od konce);
  • Hledání ze zadané pozice;
  • Vyhledejte výskyt se zadaným číslem (druhý, třetí atd.).

Ve skutečnosti duplikuje možnosti staré funkce. To se provádí za účelem zachování kompatibility s moduly kompilovanými ve starších verzích. Doporučujeme již nepoužívat starou funkci Find ().

Níže je uveden příklad použití nových možností vyhledávání. Zpětné vyhledávání je užitečné, když potřebujete poslední část formalizovaného řetězce, například plně kvalifikovaný název souboru v adrese URL. A hledání ze zadané pozice pomáhá v případech, kdy potřebujete hledat ve známém fragmentu, a ne v celém řetězci.

Typ „String“ se nachází ve všech programovacích jazycích. Je to primitivní a v 1C existuje mnoho funkcí pro práci s ním. V tomto článku se na příkladech blíže podíváme na různé způsoby práce s typy řetězců v 1C 8.3 a 8.2.

Čára

Aby bylo možné převést proměnnou jakéhokoli typu na řetězec, existuje funkce se stejným názvem „String ()“. Vstupním parametrem bude samotná proměnná, jejíž řetězcové vyjádření je třeba získat.

String (False) // vrátí „Ne“
Řetězec (12345) // vrací „12 345“
String (CurrentDate ()) // 07/21/2017 11:55:36 ″

Je možné převést nejen primitivní typy na řetězec, ale i další, například prvky adresářů, dokumentů.

SocrLP, SocrL, SocrP

Jako vstupní parametry těchto funkcí se používá proměnná typu řetězce. Funkce odstraňují nevýznamné znaky (mezery, návraty vozíku atd.): Z levé a pravé strany, pouze z levé strany a pouze z pravé strany.

Zkratka („Mezery na obou stranách budou odstraněny“) // „Mezery na obou stranách budou odstraněny“
Zkráceno („Mezery na obou stranách budou odstraněny“) // „Mezery vlevo budou odstraněny“
Zkratka („Mezery na obou stranách budou odstraněny“) // „Mezery vpravo budou odstraněny“

Lev, správně, ve středu

Tyto funkce vám umožňují oříznout část řetězce. Funkce "Lion ()" vrátí část řetězce z levé strany zadané délky. Funkce „Right ()“ je stejná, ale oříznutí se provádí vpravo. Funkce "Med ()" umožňuje určit počet znaků, ze kterých bude řetězec vybrán, a jeho délku.

Lion ("Řetězcová proměnná", 4) // vrátí "Stro"
Right ("String variable", 7) // vrací "variable"
St ("Řetězcová proměnná", 2, 5) // vrátí "troco"

Délka Str

Funkce určuje počet znaků, které jsou obsaženy v řetězcové proměnné.

StrLength ("Word") // výsledek provádění bude číslo 5

Najít

Funkce umožňuje vyhledávat část řetězce v libovolné proměnné řetězce. Návratová hodnota bude číslo, které ukazuje pozici začátku nalezeného řetězce. Pokud není nalezena shoda, vrátí se nula.

Upozorňujeme, že při vyhledávání se rozlišují velká a malá písmena. Pokud původní řetězec obsahuje více než jeden výskyt hledaného podřetězce, funkce vrátí začátek prvního výskytu.

Najít ("jeden, dva, jeden, dva, tři", "dva") // funkce vrátí číslo 6

Prázdný řádek

Pomocí této funkce můžete určit, zda je řetězec prázdný. Nevýznamné znaky, jako je mezera, návrat vozíku a další, jsou ignorovány.

EmptyString ("Pupkin Vasily Ivanovich") // funkce vrátí hodnotu False
EmptyString ("") // funkce vrátí True

VReg, NReg, Treg

Tyto funkce jsou velmi užitečné pro porovnávání a převod řetězcových proměnných. Breg () vrátí původní řetězec velkými písmeny, HPreg () malými písmeny a TPreg () jej naformátuje tak, že první znak každého jednotlivého slova bude velkými písmeny a všechny následující budou malá.

Vreg ("GENERAL DIRECTOR") // návratová hodnota - "GENERAL DIRECTOR"
NReg ("GENERAL DIRECTOR") // návratová hodnota - "generální ředitel"
TREG ("GENERAL DIRECTOR") // návratová hodnota - "generální ředitel"

PageReplace

Tato funkce je obdobou náhrady v textových editorech. Umožňuje vám nahradit jeden znak nebo sadu znaků za jiný v řetězcových proměnných.

StrReplace ("červená, bílá, žlutá", ",", ";") // vrátí "červená; bílý; žlutá"

StrNumberStrings

Tato funkce umožňuje určit počet řádků oddělených znaky konce řádku v textové proměnné.

Smyčka v níže uvedeném příkladu projde třemi kruhy, protože funkce RowNumber vrátí 3:

Pro ind \u003d 1 podle StrNumber of Lines ("String1" + Symbols.PS + "String2" + Symbols.PS + "String3") Loop
<тело цикла>
Konec cyklu;

StrGetString

Tato funkce pracuje s víceřádkovým textem stejným způsobem jako předchozí. Umožňuje vám získat konkrétní řetězec z textové proměnné.

StrGetString ("String1" + Symbols.PS + "String2" + Symbols.PS + "String3", 2) // vrátí „String2“

Str Počet událostí

Funkce spočítá počet výskytů znaku nebo podřetězce ve vyhledávacím řetězci.

StrNumber of Attachments ("a; b; c; d;", \u200b\u200b";") // funkce vrátí číslo 4

Symbol a kód symbolu

Tyto funkce vám umožňují získat znak podle jeho kódu Unicode a také určit tento kód podle samotného znaku.

SymbolCode ("A") // funkce vrátí číslo 1040
SymbolCode (1040) // funkce vrátí "A"

Časté úkoly při práci s řetězci

Zřetězení řetězců

Pro zřetězení více řetězců (k provedení zřetězení) stačí použít operátor přidání.

„Řádek 1“ + „Řádek 2“ // výsledek přidání dvou řádků bude „Řádek 1 Řádek 2“

Převod typu

Aby bylo možné převést typ na řetězec, například odkaz na položku slovníku, číslo atd., Stačí použít funkci "String ()". Funkce jako „Abbreviation ()“ také převedou proměnné na řetězec, ale okamžitě se zkrácením nevýznamných znaků.

Řetězec (1000) // vrátí hodnotu „1000“

Pamatujte, že při převodu čísla na řetězec program automaticky přidal mezeru oddělující tisíc. Abyste tomu předešli, můžete použít následující konstrukce:

StrReplace (String (1000), Characters.NPP, "") // vrátí "1000"

Řetězec (formát (1000, "ChG \u003d")) // vrátí hodnotu "1000"

Citáty v řetězci

Docela často se budete muset vypořádat s nutností specifikovat uvozovky v řetězcové proměnné. Může to být buď text požadavku napsaný v konfigurátoru, nebo jen proměnná. Chcete-li tento problém vyřešit, stačí nastavit dvě uvozovky.

Název \u003d Řetězec („Horns and Hooves LLC“ - to jsme my! ") // vrátí„ Horns and Hoofs LLC - to jsme my! "

Více řádků, zalomení řádku

Aby bylo možné vytvořit víceřádkový text, stačí k němu přidat znaky zalomení řádku (Symbols.PS).

MultilineText \u003d "První řádek" + Symbols.PS + "Druhý řádek"

Jak odstranit mezery

Chcete-li odstranit mezery vpravo nebo vlevo, můžete použít funkci „Zkratka ()“ (stejně jako „Zkratka ()“ a „Zkratka ()“):

StringNoSpaces \u003d AbbreviatedLP ("Mnoho písmen") // funkce vrátí hodnotu "Mnoho písmen"

Pokud po převodu čísla na řetězec potřebujete odstranit neporušené mezery, použijte následující konstrukci:

StringNoSpaces \u003d StrReplace (String (99999), Characters.NPP, "") // vrátí "99999"

Programátoři také často používají následující konstrukci, která umožňuje odstranit nebo nahradit všechny mezery textové proměnné jiným znakem:

StringNoSpaces \u003d StrReplace ("welcome", "", "") // vrátí "ahoj"

Porovnávání řetězců navzájem

Výrazy lze srovnávat s obvyklým znaménkem rovnosti. Ve srovnání se rozlišují velká a malá písmena.

"Hello" \u003d "ahoj" // vrátí hodnotu False
"Hello" \u003d "Hello" // vrátí hodnotu True
"Hello" \u003d "Sbohem" // vrátí hodnotu False

Řetězce v 1C 8.3 ve vestavěném jazyce 1C jsou hodnoty primitivního typu Čára... Hodnoty tohoto typu obsahují řetězec Unicode libovolné délky. Proměnné typu řetězce jsou sada znaků uzavřených do uvozovek.

Příklad 1. Vytvořme řetězcovou proměnnou s textem.

StringVariable \u003d "Ahoj světe!";

Funkce pro práci s řetězci v 1c 8.3

Tato část obsahuje hlavní funkce, které umožňují měnit řádky v 1c nebo analyzovat informace v nich obsažené.

Délka Str

StrLength (<Строка>) ... Vrátí počet znaků obsažených v řetězci předaném v parametru.

Příklad 2. Počítáme počet znaků v řádku „Hello world!“

String \u003d "Ahoj světe!"; Počet znaků \u003d StrLength (řetězec); Zpráva (počet znaků);

Výsledkem spuštění tohoto kódu bude zobrazení počtu znaků v řetězci: 11.

Zkratka

AbbrL (<Строка>) ... Zkrátí nevýznamné znaky nalevo od prvního významného znaku v řetězci.
Vedlejší postavy:

  • prostor;
  • neporušený prostor;
  • tabelace;
  • návrat vozíku;
  • překlad řádků;
  • překlad formuláře (stránky).

Příklad 3. Odstraňte všechny mezery z levé strany řádku „svět!“ a připojte k němu řetězec „Hello“.

Řetězec \u003d zkráceně („mír!“); String \u003d "Hello" + String; Zpráva (řetězec);

Výsledkem provedení tohoto kódu bude výstup řádku „Hello world!“

Zkratka

Zkratka (<Строка>) ... Zkrátí nevýznamné znaky napravo od prvního významného znaku v řetězci.

Příklad 4. Formulář „Hello“ a „World!“ fráze "Hello world!"

Řetězec \u003d zkráceně ("Hello") + "" + zkráceně ("svět!"); Zpráva (řetězec);

SokrLP

SocrLP (<Строка>) ... Zkrátí nevýznamné znaky napravo od prvního významného znaku v řetězci a také ořízne nevýznamné znaky nalevo od prvního významného znaku v řetězci. Tato funkce se používá častěji než předchozí dvě, protože je všestrannější.

Příklad 5. Odstraňte z názvu protistrany nevýznamné znaky vlevo a vpravo.

Protistrana \u003d Directories.Contractors.NaytiPoRequisite ("INN", "0777121211"); CounterpartyObject \u003d Counterparty.GetObject (); CounterpartyObject.Name \u003d ShortLP (CounterpartyObject.Name); CounterpartyObject.Write ();

Lev

Lev(<Строка>, <ЧислоСимволов>) ... Získá první znaky řetězce, počet znaků je uveden v parametru Počet znaků.

Příklad 6. Nechte strukturu Zaměstnanec obsahovat jméno, příjmení a příjmení zaměstnance. Získejte řetězec s příjmením a iniciálami.

InitialName \u003d Leo (Employee.Name, 1); Patronymic Initial \u003d Leo (zaměstnanec, Patronymic, 1); CeléJméno \u003d Zaměstnanec.Příjmení + "" + PočátečníJméno + "." + Initial of Patronymic + ".";

Že jo

Že jo (<Строка>, <ЧислоСимволов>) ... Získá poslední znaky řetězce, počet znaků je uveden v parametru Počet znaků. Pokud zadaný počet znaků přesáhne délku řetězce, je vrácen celý řetězec.

Příklad 7. Předpokládejme, že konec řetězcové proměnné obsahuje datum ve formátu „rrrrmmdd“, získejte řetězec s datem a převeďte jej na typ datum.

String \u003d "Aktuální datum: 20170910"; StringDate \u003d Right (String, 8); Datum \u003d Datum (StringDate);

středa

Středa (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) ... Získá podřetězec z řetězce předaného jako parametr Čára, počínaje znakem, jehož číslo je uvedeno v parametru Počáteční číslo a délka předaná parametru Počet znaků.Číslování znaků v řádku začíná od 1. Je-li parametr Počáteční číslo je zadána hodnota, která je menší nebo rovna nule, pak parametr přebírá hodnotu 1. Pokud je parametr Počet symbolů není zadán, jsou vybrány znaky až do konce řádku.

Příklad 8. Nechte řetězcovou proměnnou počínaje od deváté pozice obsahovat kód oblasti, měli byste ji získat a zapsat ji do samostatného řádku.

Řádek \u003d "Region: 99 Moskva"; Region \u003d St (linka, 9, 2);

Vyhledávání

Vyhledávání (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) ... Vyhledá zadaný podřetězec v řetězci a vrátí číslo pozice prvního znaku nalezeného podřetězce. Zvažte parametry této funkce:

  • Čára... Zdrojový řetězec;
  • Hledání podřetězce... Hledání podřetězce;
  • Směr vyhledávání... Určuje směr hledání podřetězce v řetězci. Může nabývat hodnot:
    • Směr vyhledávání. Od začátku;
    • Směr vyhledávání.;
  • Počáteční pozice... Určuje pozici v řetězci, od kterého začíná hledání;
  • Počet vstupů... Určuje počet výskytů požadovaného podřetězce v původním řetězci.

Příklad 9. V řádku „Hello world!“ určit polohu posledního výskytu symbolu „a“.

PositionNumber \u003d StrNayti ("Hello world!", "And", DirectionSearch.End); Zpráva (číslo pozice);

Výsledkem tohoto provedení kódu bude zobrazení čísla posledního výskytu symbolu „a“: 9.

Vreg

BReg (<Строка>) ... Převede všechny znaky v zadaném řetězci za 1 s 8 na velká písmena.

Příklad 10. Převést řetězec „ahoj svět!“ na velká písmena.

StringBreg \u003d BReg ("ahoj svět!"); Zpráva (StringVreg);

Výsledkem provedení tohoto kódu bude zobrazení řádku „AHOJ SVĚT!“

Nreg

HPreg (<Строка>) ... Převede všechny znaky v zadaném řetězci za 1 s 8 na malá písmena.

Příklad 11. Převést řetězec „AHOJ SVĚT!“ malá písmena.

StringNreg \u003d НReg ("AHOJ SVĚT!"); Zpráva (StringVreg);

Výsledkem provedení tohoto kódu bude výstup řádku „ahoj svět!“

Treg

Treg (<Строка>) ... Převede řetězec následujícím způsobem: první znak každého slova se převede na velká písmena, zbývající znaky slova se převedou na malá písmena.

Příklad 12. Počáteční písmena slov v řetězci "ahoj svět!"

StringTreg \u003d Treg ("ahoj svět!"); Report (StringTreg);

Výsledkem spuštění tohoto kódu bude výstup řádku „Hello World!“

Symbol

Symbol(<КодСимвола>) ... Získá znak podle kódu Unicod.

Příklad 13. Přidejte vlevo a vpravo do řádku „Hello World!“ symbol ★

StringWithStars \u003d Symbol ("9733") + "Hello World!" + Symbol ("9733"); Report (StringWithStars);

Výsledkem tohoto provedení kódu bude výstup řádku „★ Hello World! ★“

Kód symbolu

SymbolCode (<Строка>, <НомерСимвола>) ... Získá kód znaku Unicode z řetězce určeného v prvním parametru, který se nachází na pozici určené v druhém parametru.

Příklad 14. Zjistěte kód posledního znaku v „Hello World!“

String \u003d "Hello World!"; CharacterCode \u003d CharacterCode (String, StrLength (String)); Zpráva (SymbolCode);

Výsledkem provedení tohoto kódu bude zobrazení kódu symbolu „!“ - 33.

Prázdný řádek

Prázdný řádek (<Строка>) ... Zkontroluje, zda řetězec obsahuje pouze nevýznamné znaky, to znamená, že je prázdný.

Příklad 15. Zkontrolujte, zda je řetězec skládající se ze tří mezer prázdný.

Empty \u003d EmptyString (""); Zpráva (prázdná);

Výsledkem provedení tohoto kódu bude zobrazení slova „Ano“ (řetězcové vyjádření logické hodnoty Skutečný).

PageReplace

Nahradit (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) ... Najde všechny výskyty vyhledávacího podřetězce v původním řetězci a nahradí jej podřízeným podřetězcem.

Příklad 16. V řádku „Hello World!“ nahraďte slovo „Mír“ slovem „Přátelé“.

String \u003d StrReplace ("Hello World!", "World", "Friends"); Zpráva (řetězec);

Výsledkem provedení tohoto kódu bude zobrazení řádku „Ahoj přátelé!“

StrNumberStrings

RowNumber (<Строка>) ... Spočítá počet řádků ve víceřádkovém řetězci. Chcete-li přejít na nový řádek za 1 s 8, použijte znak PS (znak posunu řádku).

Příklad 17. Určete počet řádků v textu:
"První řada
Druhý řádek
Třetí řádek "

Number \u003d StrNumberStrings ("První řádek" + Symbols.PS + "Druhý řádek" + Symbols.PS + "Třetí řádek"); Zpráva (číslo);

Výsledkem provedení tohoto kódu bude zobrazení počtu řádků v textu: 3

StrGetString

StrGetString (<Строка>, <НомерСтроки>) ... Získá řetězec ve víceřádkovém řetězci podle jeho čísla. Číslování řádků začíná na 1.

Příklad 18. Získejte poslední řádek v textu:
"První řada
Druhý řádek
Třetí řádek "

Text \u003d "První řádek" + Symbols.PS + "Druhý řádek" + Symbols.PS + "Třetí řádek"; LastString \u003d StrGetString (Text, StrNumberLines (Text)); Zpráva (LastLine);

Výsledkem provedení tohoto kódu bude zobrazení řádku „Třetí řádek“.

Str Počet událostí

Str Počet událostí (<Строка>, <ПодстрокаПоиска>) ... Vrátí počet výskytů zadaného podřetězce v řetězci. Tato funkce rozlišuje velká a malá písmena.

Příklad 19. Určete, kolikrát se písmeno „c“ objeví v řádku „Řádky za 1 s 8.3 a 8.2“, bez ohledu na jeho velikost.

Line \u003d "Lines in 1s 8.3 and 8.2"; Number of Occurrences \u003d StrNumber of Occurrences (Vreg (String), "S"); Zpráva (počet výskytů);

Výsledkem spuštění tohoto kódu bude zobrazení počtu výskytů: 2.

Stránka začíná s

PageStarts With (<Строка>, <СтрокаПоиска>) ... Zkontroluje, zda řetězec předaný v prvním parametru začíná řetězcem ve druhém parametru.

Příklad 20. Určete, zda TIN vybrané protistrany začíná číslem 1. Nechte proměnnou Protistrana Dodavatelé.

TIN \u003d Counterparty.INN; StartsUnits \u003d StrStartsWith (INN, "1"); If BeginsUnits Then // Váš kód EndIf;

Stránka končí

PageEnds With (<Строка>, <СтрокаПоиска>) ... Zkontroluje, zda řetězec předaný v prvním parametru končí řetězcem ve druhém parametru.

Příklad 21. Určete, zda TIN vybrané protistrany končí číslicí 2. Nechte proměnnou Protistranaje uložen odkaz na položku adresáře Dodavatelé.

TIN \u003d Counterparty.INN; Končí dvěma \u003d Str končí (INN, „2“); If Ends WithDouble Then // Váš kód EndIf;

PageSplit

StrSplit (<Строка>, <Разделитель>, <ВключатьПустые>) ... Rozdělí řetězec na části pomocí zadaných znaků oddělovače a zapíše výsledné řetězce do pole. První parametr ukládá původní řetězec, druhý obsahuje řetězec obsahující oddělovač, třetí určuje, zda do pole zapsat prázdné řetězce (ve výchozím nastavení Skutečný).

Příklad 22. Předpokládejme, že máme řetězec obsahující čísla oddělená znakem „;“, získáme z řetězce pole čísel.

Řetězec \u003d "1; 2; 3"; Array \u003d StrSplit (String, ";"); Pro Rd \u003d 0 podle pole.Quantity () - pole pokusu o 1 cyklus [Rd] \u003d číslo (AbbrLP (pole [Rb])); Pole výjimek [Сч] \u003d 0; Konec pokusů Konec smyčky;

V důsledku provedení bude získáno pole s čísly od 1 do 3.

StrConnect

StrConnect (<Строки>, <Разделитель>) ... Převede pole řetězců z prvního parametru na řetězec obsahující všechny prvky pole, oddělené oddělovačem uvedeným v druhém parametru.

Příklad 23. Pomocí pole čísel z předchozího příkladu získáte původní řetězec.

Pro Ref \u003d 0 Array.Number () - 1 cyklus Array [Ref] \u003d Řetězec (Array [Ref]); Konec cyklu; Řetězec \u003d StrConnect (pole, ";");

Existuje několik mechanismů pro práci s řetězci v dotazech 1C. Nejprve lze přidat řádky. Za druhé, můžete si vzít podřetězec z řetězce. Za třetí, řetězce lze porovnávat, včetně vzorů. To je pravděpodobně vše, co můžete s řetězci dělat.

Zřetězení řetězců

K přidání řetězců do dotazu se používá operace „+“. Lze přidat pouze řádky omezené délky.

VYBERTE "Název:" + Protistrany. Název AS Sloupec 1 Z Adresáře. Dodavatelé AS Protistrany WHERE Protistrany. Odkaz \u003d & Odkaz

Funkce podřetězce

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

Analogická funkce prostředí () z objektového modelu. Funkci Substring () lze použít na data typu řetězce a umožňuje vybrat fragment <Строки> počínaje číslem znaku <НачальнаяПозиция> (znaky v řetězci jsou očíslovány od 1) a délka <Длина> postavy. Výsledek vyhodnocení funkce má typ řetězce s proměnnou délkou a délka bude považována za neomezenou, pokud <Строка> má neomezenou délku a parametr <Длина> není konstantní nebo přesahuje 1024.

Pokud je délka řetězce menší než zadaná ve druhém parametru, vrátí funkce prázdný řetězec.

Pozornost! Použití funkce SUBSTRING () k převodu řetězců neomezené délky na řetězce omezené délky se nedoporučuje. Místo toho je lepší použít operaci obsazení EXPRESS ().

Funkce jako

Pokud se potřebujeme ujistit, že atribut řetězce splňuje určitá kritéria, porovnáme jej:

VYBRAT protistrany. Název AS Sloupec 1 Z adresáře. Protistrany AS Protistrany WHERE Protistrany. Název \u003d "Gazprom"

Ale co když chcete složitější srovnání? Nejen rovnost nebo nerovnost, ale jako určitý vzor? To je přesně to, pro co je vytvořena funkce LIKE.

LIKE - Operátor pro kontrolu řetězce jako vzoru. Analog LIKE v SQL.

Operátor LIKE umožňuje porovnat hodnotu zadaného výrazu nalevo od něj s řetězcem šablony určeným vpravo. Hodnota výrazu musí být typu string. Pokud hodnota výrazu odpovídá vzoru, vrátí operátor hodnotu TRUE, jinak bude FALSE.

Následující znaky v řetězci šablony jsou servisní znaky a mají jiný význam než znak řetězce:

  • % (procenta): sekvence obsahující libovolný počet libovolných znaků;
  • _ (podtržítko): jeden libovolný znak;
  • […] (Jeden nebo více znaků v hranatých závorkách): jakýkoli jeden znak uvedený v hranatých závorkách. Výčet může obsahovat rozsahy, například a-z, což znamená libovolný znak zahrnutý v rozsahu, včetně konců rozsahu;
  • [^…] (V hranatých závorkách znak negace následovaný jedním nebo více znaky): libovolný jeden znak, kromě těch, které jsou uvedeny za znakem negace.

Jakýkoli jiný symbol znamená sám sebe a nenese žádný další význam. Pokud jeden z uvedených znaků musí být zaznamenán jako sám, musí před ním být<Спецсимвол>... Sám<Спецсимвол> (jakýkoli vhodný znak) je definován ve stejném příkazu za klíčovým slovem SPECIÁLNÍ CHARAKTER.

Poznámky z zrcadla

18. 8. 2014 Nové funkce pro práci s řetězci

Implementováno ve verzi 8.3.6.1977.

Rozšířili jsme sadu funkcí pro práci s řetězci. Udělali jsme to, abychom vám poskytli pokročilejší nástroje pro analýzu dat řetězce. Nové funkce budou pohodlné a užitečné v technologických úkolech textové analýzy. V úlohách souvisejících s analýzou textu, který obsahuje formátovaná data. Může to být analýza některých souborů přijatých ze zařízení nebo například analýza technologického protokolu.

Všechny akce, které provádějí nové funkce, jste mohli provést dříve. S pomocí více či méně složitých algoritmů napsaných ve vloženém jazyce. Nové funkce vám proto nedávají žádné zásadně nové možnosti. Mohou však snížit množství kódu, učinit kód jednodušším a srozumitelnějším. A kromě toho vám umožňují urychlit provádění akcí. Protože funkce implementované v platformě fungují samozřejmě rychleji než podobný algoritmus napsaný ve vloženém jazyce.

Funkce formátování StrPattern ()

Tato funkce nahrazuje parametry do řetězce. Potřeba takového převodu často vyvstává například při zobrazování varovných zpráv. Syntaxe této funkce je následující:

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

<Шаблон> je řetězec, který má nahradit reprezentace parametrů.

<Значение1> , ... <Значение10> - to jsou parametry (maximálně - deset), jejichž reprezentace musí být do řetězce nahrazeny.

Chcete-li v šabloně označit konkrétní místo, kde chcete provést substituci, musíte použít značky jako% 1, ...% 10. Počet značek použitých v šabloně a počet parametrů obsahujících hodnoty se musí shodovat.

Například výsledek provedení takového prohlášení:

tam bude řádek:

Chyba dat na řádku 2 (je vyžadován typ data)

Funkce pro práci s řetězci StrCompare ()

Tato funkce porovnává dva řetězce způsobem, který nerozlišuje velká a malá písmena. Například takto:

Před použitím objektu jste mohli provést stejnou akci Srovnání hodnot:

Použití nové funkce však vypadá jednodušší. A kromě toho funkce, na rozdíl od objektu Srovnání hodnot, funguje jak v tenkém klientovi, tak ve webovém klientovi.

Funkce pro práci s řetězci RowStart With (), RREnd With ()

Tyto funkce určují, zda řetězec začíná zadaným podřetězcem nebo končí zadaným podřetězcem. Algoritmus těchto funkcí je snadné implementovat ve vloženém jazyce, ale jejich přítomnost vám umožňuje psát čistší a srozumitelnější kód. A fungují rychleji.

Například je vhodné je použít v operátoru Li:

Funkce pro práci s řetězci StrSplit (), StrConnect ()

Tyto funkce rozdělují řetězec na části podle zadaného oddělovače. Nebo naopak spojí několik řádků do jednoho a vloží mezi ně vybraný oddělovač. Jsou vhodné pro vytváření nebo analýzu protokolů, technologických protokolů. Například můžete snadno rozložit záznam technologického protokolu na části vhodné pro další analýzu:

Funkce pro práci s řetězci StrFind ()

Místo staré funkce Najít() implementovali jsme novou funkci, která má další funkce:

  • Hledání v různých směrech (od začátku, od konce);
  • Hledání ze zadané pozice;
  • Vyhledejte výskyt se zadaným číslem (druhý, třetí atd.).

Ve skutečnosti duplikuje možnosti staré funkce. To se provádí za účelem zachování kompatibility s moduly kompilovanými ve starších verzích. Stará funkce Najít() nedoporučuje se znovu používat.

Níže je uveden příklad použití nových možností vyhledávání. Zpětné vyhledávání je užitečné, když potřebujete poslední část formalizovaného řetězce, například plně kvalifikovaný název souboru v adrese URL. A hledání ze zadané pozice pomáhá v případech, kdy potřebujete hledat ve známém fragmentu, a ne v celém řetězci.