• Získejte číslo z řetězce 1s. Nové funkce pro práci s řetězci. Funkce převodu malých a velkých písmen

    Ahoj všichni
    Dnes mě požádali, abych nezobrazoval předponu dokumentu při tisku prováděcího dokumentu, problém byl vyřešen následovně.

    StrReplace(Číslo, Lev(Číslo, 3), "" );

    Když jsem se podíval do asistenta syntaxe, tak se mi to líbilo, že jsem o tom chtěl psát práce s řetězci v 1C:Enterprise.

    Řetězec v 1C odkazuje na primitivní datový typ.

    Pokud se podíváte do nápovědy 1C, uvidíte následující popis typu String (String)
    Hodnoty tohoto typu obsahují řetězec Unicode libovolné délky.
    Pokud podle vlastních slov o strunách, tak to bude fungovat. Řetězec je konstanta skládající se z různých znaků, vždy obklopených uvozovkami.

    Specifikace řetězce
    Title = "Ahoj cestující";

    Víceřádkové řetězce v typických konfiguracích se nejčastěji vytvářejí pomocí svislého oddělovače "|":
    String = "Víceřádkový
    |řetězec
    | napsat
    |text";

    Citace v řetězci je určena dvojitými uvozovkami.
    String = ""Text v uvozovkách"";

    Operací s řetězci je mnoho (hledání v řetězci, určování prvních atd.), lepší je podívat se do Syntax Helper.
    Pomocník syntaxe - Obecný popis vestavěného jazyka-> vestavěné funkce-> funkce pro práci s řetězci.

    Funkce pro práci s řetězci

    Zde ve stručné formě uvedu funkce pro práci s řetězci:

    VReg(<Строка>) - Funkce převede všechny znaky řetězce na velká písmena.

    Kód symbolu(<Строка>, <НомерСимвола>) – Funkce obdrží kód znaku umístěného v předávaném řetězci na pozici se zadaným číslem.

    Lev(<Строка>, <ЧислоСимволов>) – Funkce vybere první znaky zleva od řetězce.

    Nalézt(<Строка>, <ПодстрокаПоиска>) — Funkce najde výskyt hledaného řetězce jako podřetězec v původním řetězci.

    HReg(<Строка>) — Funkce převede všechny znaky řetězce na malá písmena.

    Že jo(<Строка>, <ЧислоСимволов>) – Tato funkce se liší od funkcí Left v tom, že vybírá poslední znaky zprava od řetězce.

    Prázdný řádek (<Строка>) — Funkce kontroluje řetězec na přítomnost významných znaků.

    Symbol(<КодСимвола>) — Funkce převede kód znaku na řetězec obsahující znak.

    Zkratka(<Строка>) — Funkce ořízne nevýznamné znaky nalevo od prvního významného znaku v řetězci.

    Abbrl(<Строка>) — Funkce ořízne nevýznamné znaky nalevo od prvního významného znaku v řetězci a mezery napravo od posledního významného znaku v řetězci.

    zkratka(<Строка>) — Funkce ořízne nevýznamné znaky vpravo od posledního významného znaku v řetězci.

    Středa(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - Funkce vybere řetězec znaků počínaje znakem<НачальныйНомер>, celkem<ЧислоСимволов>.

    StrLength(<Строка>) — Funkce získá počet znaků v řetězci.

    StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) — Funkce najde všechny výskyty hledaného podřetězce ve zdrojovém řetězci a nahradí jej náhradním podřetězcem.

    StrGetString(<Строка>, <НомерСтроки>) — Funkce získá řetězec víceřádkového řetězce podle čísla.

    StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) — Funkce vypočítá počet výskytů hledaného podřetězce ve zdrojovém řetězci.

    StrPočet řádků(<Строка>) — Funkce počítá počet řádků ve víceřádkovém řetězci. Ve víceřádkovém řetězci jsou řádky odděleny znaky nového řádku.

    TReg(<Строка>) — Funkce převede řetězec na velikost písmen. To znamená, že pro každé slovo je první znak převeden na velká písmena nebo na velká písmena, pokud pro daný znak není zadáno žádné velké písmeno. Zbývající znaky jsou převedeny na malá písmena.

    Typ konverze
    Pro explicitní převod datového typu existují funkce se stejným názvem jako datový typ, na který převod probíhá: String(<Значение>)

    StringFromNumbers= String(číslo);

    Všechny tyto funkce jsou podrobně popsány v Syntax Assistant, jak může Syntax Assistant pomoci začínajícímu programátorovi, jsem popsal v článku.

    Příklady řetězců

    Převést číslo na řetězec a zpět.

    Chcete-li získat řetězcovou reprezentaci roku, použijte funkci Formát.

    Year = Format(CurrentDate(), "DF=yyyy" ) // Year = "2012"

    Chcete-li převést číslo na řetězec bez vložení znaku oddělujícího skupinu (nedělitelná mezera), musíte použít funkci Formát s parametrem NH=0:

    Číslo = 2012 Řetězec = Formát(Číslo, "NW=0" ); //String = "2012"

    Řetězec Bez mezer.

    String je jedním z primitivních datových typů v systémech 1C:Enterprise 8. Proměnné s typem čára obsahovat text.

    Zadejte hodnoty proměnných čára jsou uzavřeny ve dvojitých uvozovkách. Lze přidat několik proměnných tohoto typu.

    Per1 = "Slovo 1" ;
    Per2 = "Slovo 2" ;
    Per3 = Per1 + " " + Per2 ;

    Nakonec Per3 bude záležet" Slovo 1 Slovo 2″.

    Systémy 1C:Enterprise 8 navíc poskytují funkce pro práci s řetězci. Zvažte ty hlavní:

    EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funkce je navržena tak, aby zobrazila dialogové okno, ve kterém může uživatel zadat hodnotu proměnné typu Čára. Parametr <Строка> je povinný a obsahuje název proměnné, do které se zadaný řetězec zapíše. Parametr <Подсказка> nepovinný je název dialogového okna. Parametr <Длина> volitelné, označuje maximální délku vstupního řetězce. Výchozí hodnota je nula, což znamená neomezenou délku. Parametr <Многострочность> volitelný. Určuje režim zadávání víceřádkového textu: True – víceřádkový textový vstup s oddělovači řádků; False – Zadejte jednoduchý řetězec.

    Lze zadat řetězec a se znalostí kódu znaku v Unicode:

    Symbol(<КодСимвола>) — Kód se zadává jako číslo.

    Písmeno= Symbol(1103 ) ; // Já

    K dispozici je také inverzní funkce, která umožňuje zjistit kód znaku.

    Kód symbolu(<Строка>, <НомерСимвола>) — Vrátí číslo Unicode zadaného znaku jako číslo.

    Funkce převodu malých a velkých písmen:

    VReg(<Строка>) - Převede všechny znaky v řetězci na velká písmena.

    HReg(<Строка>) - Převede všechny znaky v řetězci na malá písmena.

    TReg(<Строка>) - převede všechny znaky řetězce na velká a malá písmena. To znamená, že první písmena ve všech slovech se převedou na velká a zbývající písmena se převedou na malá.

    Funkce pro vyhledávání a nahrazování znaků v řetězci:

    Nalézt(<Строка>, <ПодстрокаПоиска>) - zjistí číslo znaku výskytu hledaného podřetězce. Například:

    Najít ("String" , "oko" ) ; // 4

    StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — vyhledá číslo znaku výskytu hledaného podřetězce, číslo výskytu je uvedeno v odpovídajícím parametru. V tomto případě začíná hledání od znaku, jehož číslo je uvedeno v parametru StartPosition. Vyhledávání je možné od začátku nebo od konce řetězce. Například:

    Položka číslo4= StrFind( "obrana", "o" , Směr hledání. Za prvé, 1, 4); // 7

    StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) Najde všechny výskyty hledaného podřetězce ve zdrojovém řetězci a nahradí jej náhradním podřetězcem.

    StrReplace("String" , "oko" , "" ) ; // Stránka

    Prázdný řádek (<Строка>) - zkontroluje řetězec na významné znaky. Pokud nejsou žádné nebo žádné významné znaky, vrátí se hodnota Skutečný. V opačném případě - Lhát.

    StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – vypočítá počet výskytů hledaného podřetězce ve zdrojovém řetězci.

    StrNumberOccurrences ( "Studuj, studuj a zase studuj", "studium", ""); // 3

    StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — dosadí parametry do řetězce číslem. Řetězec musí obsahovat substituční značky ve tvaru: "%1..%N". Číslování značek začíná od 1. Pokud je hodnota parametru Nedefinováno, prázdný řetězec je nahrazen.

    StrPattern ( "Možnost 1 = %1, Možnost 2 = %2", "1" , "2" ) ; // Parametr 1= 1, Parametr 2 = 2

    Funkce převodu řetězců:

    Lev(<Строка>, <ЧислоСимволов>) vrátí první znaky řetězce.

    Že jo(<Строка>, <ЧислоСимволов>) - vrátí poslední znaky řetězce.

    Středa(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - vrátí řetězec délky<ЧислоСимволов>, počínaje znakem<НачальныйНомер>.

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

    zkratka(<Строка>) - ořízne nevýznamné znaky vpravo od posledního významného znaku v řetězci.

    Abbrl(<Строка>) - ořízne nevýznamné znaky vlevo od prvního významného znaku v řetězci a vpravo od posledního významného znaku v řetězci.

    StrGetString(<Строка>, <НомерСтроки>) – získá řetězec víceřádkového řetězce podle čísla.

    Další funkce:

    StrLength(<Строка>) - vrátí počet znaků v řetězci.

    StrPočet řádků(<Строка>) - vrátí počet řádků ve víceřádkovém řetězci. Řádek je považován za nový, pokud je od předchozího řádku oddělen znakem nového řádku.

    StrCompare(<Строка1>, <Строка2> ) - necitlivě porovnává velikost písmen dvou řetězců. Funkce funguje jako objekt Porovnání hodnot. Vrácení:

    • 1 - pokud je první řádek větší než druhý
    • -1 - pokud je druhý řádek větší než první
    • 0 - pokud jsou řetězce stejné

    StrCompare("První řádek" , "Druhý řádek" ) ; // 1

    Mezi základní vlastnosti programovacího jazyka obvykle patří práce s čísly a řetězci. Obvykle jsou tyto vlastnosti pevně zabudovány do kódu kompilátoru (nebo jsou implementovány „základní“ třídy programovacího jazyka).

    V 1C jsou možnosti práce s řetězci naprogramovány v samotné platformě. Dnes budeme zvažovat funkce práce s řetězci 1C v programech ve vestavěném jazyce 1C.

    Hodnota řádku 1C

    1. Začneme tím nejjednodušším. Vytvoření proměnné a přiřazení konstantní hodnoty řetězce vypadá v 1C takto:

    Proměnná = "Ahoj světe!";

    Pokud chcete zadat znak citace v konstantní hodnotě řetězce 1C, musíte jej zdvojnásobit ""

    Proměnná = "Dobrý den, "světe""!";

    2. Zalomení řádku 1C lze zadat dvěma způsoby najednou. První je použití symbolu |

    Proměnná = "Dobrý den,
    | svět! ";

    Druhým je použití systémového výčtu Symbols. Umožňuje přidat zalomení řádku 1C a další netisknutelné znaky, jako je TAB.

    Proměnná = "Ahoj" + Symbols.ps + "mír!";

    3. Konfigurace v 1C lze vyvíjet nejen pro jeden jazyk (ruštinu, angličtinu nebo jiný) - ale současně pro několik jazyků. V tomto případě je aktuálně používaný jazyk vybrán ve spodní části okna 1C.

    Seznam jazyků se nachází v konfiguračním okně ve větvi Obecné/Jazyky. Každý jazyk má krátký identifikátor jako např en nebo Ing.

    Je jasné, že při programování takové konfigurace mohou být 1C linky i vícejazyčné. K tomu je možné vytvořit takový 1C řádek zadáním skrz; možnosti podle ID jazyka:

    Proměnná = "ru=""Ahoj světe!""; en=""Ahoj světe!" """;

    Pokud takto vytvořenou čáru 1C použijete jako obvykle, pak bude to, co je v ní napsáno. Aby jej systém rozdělil na dvě možnosti a použil požadovanou, musíte použít funkci NStr():

    //správné pro dvojjazyčné konfigurace
    Report(NStr(Proměnná));

    Rekvizity s vedením typu 1C

    Podmínkou je pole adresáře / dokumentu 1C. Od proměnné v programu v jazyce 1C se liší tím, že její typ je u atributu přesně uveden (číslo, řetězec 1C atd.). Pokud si potřebujete oprášit, co jsou to rekvizity, podívejte se na tutoriál na .

    Pokud zadáte typ atributu - řádek 1C, musíte dodatečně zadat parametry.

    Řetězce 1C mají neomezenou délku (označuje se jako délka = 0) a omezenou délku s uvedením přesného počtu znaků. 1C řetězce neomezené délky jsou uloženy v samostatné SQL tabulce, takže jejich použití je méně produktivní než omezené.

    Proto má použití 1C strun neomezené délky svá omezení – není možné je použít všude. Není to například možné jako číslo dokladu, kód adresáře, měření.

    Práce s 1C linkami

    Pro práci s řetězci existuje několik vestavěných funkcí platformy 1C.

    • AbbrLP("Neuvěřitelné, ale pravdivé!")
      Odstraní přebytečné mezery z řetězce 1C. Lze jej také použít k převodu libovolného typu na řetězec 1C (například čísla).
    • Proměnná = "Vasya" + Abbrl("plus") + "Olya"; //bude "Vasya plus Olya"
      Příklad sečtení několika hodnot řetězce 1C. Výsledkem je jeden řádek 1C.
    • Proměnná = Lev("Hudba", 2); // bude "Mu"
      Proměnná = Avg("Hudba", 2, 2); // bude "ps"
      Proměnná = Rights("Hudba", 2); // bude "ka"
      Různé možnosti pro získání podřetězce z řetězce 1C.
    • Proměnná = Najít("Hudba", "ps"); //bude 3
      Vyhledejte podřetězec v řetězci 1C počínaje znakem 1.
    • Proměnná = StrLength("Hudba"); //bude 6
      Vrátí počet znaků v řetězci 1C.
    • Upozornit("Ahoj") //v okně se zprávou ve spodní části okna 1C
      alert("ahoj") //vyskakovací dialogové okno
      Status("Ahoj") //v řádku zobrazení stavu vlevo dole
      .

    Přiveďte objekty na řádek 1C

    Jak víte, v současnosti je nejpopulárnějším formátem pro výměnu strukturovaných informací XML. I nejnovější verze MS Office Word a Excel ukládají soubory v tomto formátu (docx a xlsx, změňte příponu na zip, otevřete v archivátoru).

    Platforma 1C pro výměnu dat poskytuje několik možností, z nichž hlavní je také XML.

    1. Nejjednodušší metodou je použití funkce ShortLP() nebo String(). V textu dotazu můžete použít funkci REPRESENTATION(). Výsledek jejich akce je stejný – vygenerují pro uživatele řetězcovou reprezentaci libovolného 1C objektu.

    U výchozího adresáře to bude jeho název. U dokumentu název dokumentu, číslo a datum.

    2. Jakýkoli objekt 1C (s omezeními) lze převést do XML a naopak. Proces převodu se nazývá serializace.

    ViewStringXml = XMLString(Value); //získáte XML z hodnoty 1C
    Hodnota1С = XMLValue(Type("KatalogReference.Nomenklatura"),ViewStringXml); //získáte hodnotu 1C z řetězce XML, musíte zadat typ 1C, který má být přijat

    3. Existuje nativní způsob platformy 1C, jak převést jakýkoli objekt 1C na řetězec. To migrovalo z verze 1C 7.7. Tomuto formátu nerozumí jiné programy, ale rozumí jinému 1C, což usnadňuje jeho použití pro výměnu mezi databázemi 1C.

    Řetězec = ValueInStringInt(Value1S); //získáme řetězec 1C z hodnoty 1C
    ValueToFile("C:\MyFile.txt", Value1C); //další možnost, získáme soubor s uloženým řetězcem od hodnoty 1C
    Hodnota1C = ValueFromStringInt(String); //zpět z řádku 1C
    Hodnota1C = ValueFromFile("C:\MyFile.txt"); //zpět ze souboru

    Úprava řádků 1C na formuláři

    Kromě práce s 1C řetězci v 1C programu bych si samozřejmě přál, aby je uživatel mohl upravovat. K tomu existuje několik možností:

    1. Nejjednodušší způsob je požádat o vstup linky 1C na vyžádání. Tato metoda se používá při výuce programování 1C, v životě se používá mnohem méně často (ale používá se!).

    Proměnná = "";
    String = EnterValue(Proměnná, "Zadejte celé jméno");

    2. Pro zobrazení detailů objektu 1C (adresář / dokument) nebo detailů formuláře (viz) se nejčastěji používá vstupní pole. Toto je nejběžnější nástroj v 1C pro uživatele pro práci s editačními poli.

    3. Možnosti vstupního pole lze rozšířit (viz vlastnosti vstupního pole, klikněte na něj pravým tlačítkem, pro další podrobnosti):

    • Zaškrtávací políčko Režim víceřádkových úprav
    • Zaškrtávací políčko Pokročilé úpravy (dostupné, pokud je zaškrtnuté předchozí políčko)
    • Zaškrtávací políčko Režim hesla (viz ).

    4. Pokud by vám nestačily všechny možnosti vstupního pole, je zde vestavěný editor. Pro přidání do formuláře je potřeba přidat Pole textového dokumentu v menu Formulář / Vložit ovládací prvek. V jeho vlastnostech můžete určit režim jeho fungování - vlastnost Extension.

    Pole textového dokumentu nelze přímo propojit s daty. Do obsluhy události formuláře OnOpening() je nutné napsat následující funkci (viz ):

    FormElements.ElementNameTextDocumentField.SetText(StringValue); //zde ValueString je text přijatý například z atributu

    A v obslužné rutině ukládání - například v tlačítku Uložit - přidejte uložení:

    ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueString zde jsou rekvizity, kam uložíme hodnotu

    5. Ve verzi 1C 8.2.11 je ve spravovaných formulářích nová možnost reprezentovat řádek 1C - pole Formátovaný dokument.


    Podobně jako pole textového dokumentu je nutné nastavit při otevírání a zapisovat při ukládání textu sami pomocí programu.

    • V objektu 1C, jehož podobu vytváříme (referenční kniha, dokument, zpracování atd.) - přidejte atribut s typem Value Storage
    • Ve funkci OnReadOnServer() nastavte text z atributu

      //here Requisite je přidaný atribut objektu 1C
      //here FormattedDocument je název pole ve formuláři pro úpravy
      &Na serveru

      FormattedDocument = CurrentObject.Attributes.Get();
      EndProcedure

    • Ve funkci BeforeWriteOnServer() nebo stisknutím tlačítka napište text z pole

      &Na serveru
      Procedura OnReadingOnServer(CurrentObject)
      CurrentObject.Attributes = NewValueStorage(FormattedDocument);
      EndProcedure

    Typ String se nachází ve všech programovacích jazycích. Je primitivní a v 1C je pro práci s ním mnoho funkcí. V tomto článku podrobně zvážíme různé způsoby práce s typy řetězců v 1C 8.3 a 8.2 pomocí příkladů.

    Čára

    Aby bylo možné převést proměnnou jakéhokoli typu na řetězec, existuje stejnojmenná funkce "String ()". Vstupním parametrem bude samotná proměnná, jejíž řetězcová reprezentace má být získána.

    String(False) // vrátí "Ne"
    String(12345) // vrátí "12 345"
    String(CurrentDate()) //"21.07.2017 11:55:36"

    Na řetězec je možné převádět nejen primitivní typy, ale i další, například prvky adresářů a dokumentů.

    Zkráceno LP, Zkráceno L, Zkráceno P

    Vstupními parametry těchto funkcí jsou proměnná typu string. Funkce odstraňují nepodstatné znaky (mezery, konce řádku atd.): z levé a pravé strany, pouze z levé strany a pouze zprava.

    abbrl("Mezery na obou stranách budou odstraněny") // "Mezery na obou stranách budou odstraněny"
    abbr("Mezery na obou stranách budou odstraněny") // "Mezery na levé straně budou odstraněny"
    abbr(" Mezery na obou stranách budou odstraněny ") // "Mezery na pravé straně budou odstraněny"

    Leo, vpravo, uprostřed

    Tyto funkce umožňují odříznout část řetězce. Funkce Lion() vrátí část řetězce na levé straně zadané délky. Funkce "Right()" je podobná, ale oříznutí se provádí vpravo. Funkce "St()" umožňuje zadat číslo znaku, ze kterého bude řetězec vybírán, a jeho délku.

    Lion("String variable", 4) // vrátí "Stro"
    Right("String variable", 7) // vrátí "variable"
    avg("String variable", 2, 5)// vrátí "troco"

    StrLength

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

    StrLength("Word") // výsledkem provedení bude číslo 5

    Nalézt

    Funkce umožňuje vyhledat část řetězce v řetězcové proměnné. Návratovou hodnotou bude číslo, které označuje pozici začátku nalezeného řetězce. Pokud nejsou nalezeny žádné shody, vrátí se nula.

    Všimněte si, že vyhledávání rozlišuje velká a malá písmena. Pokud je v původním řetězci více než jeden výskyt hledaného podřetězce, funkce vrátí začátek prvního výskytu.

    Find("jeden, dva, jedna, 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ý. Nepodstatné znaky, jako je mezera, návrat vozíku a další, se neberou v úvahu.

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

    VReg, NReg, TReg

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

    VReg("GENERAL DIRECTOR") // návratová hodnota - "GENERAL DIRECTOR"
    HReg("GENERAL DIRECTOR") // návratová hodnota - "CEO"
    TREG("GENERAL DIRECTOR") // návratová hodnota - "Generální ředitel"

    StrReplace

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

    StrReplace("red, white, yellow", ",", ";") // vrátí "red; bílý; žlutá"

    StrNumberRows

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

    Smyčka v příkladu níže bude procházet třemi kruhy, protože funkce StrNumberRows vrátí hodnotu 3:

    Pro ind \u003d 1 podle StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") smyčka
    <тело цикла>
    EndCycle;

    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í "Řádek2"

    StrNumberOccurrences

    Funkce počítá počet výskytů znaku nebo podřetězce v hledaném řetězci.

    StrNumberInstallations("a;b;c;d; ", ";") // funkce vrátí číslo 4

    Symbol a Kód symbolu

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

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

    Časté úkoly při práci se strunami

    Zřetězení řetězců

    Pro zřetězení více řetězců (concatenate) stačí použít operátor sčítání.

    "Řádek 1" + "Řádek 2" //výsledkem 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 prvek slovníku, číslo atd., stačí použít funkci "String ()". Funkce jako "ShortLP()" také převedou proměnné na řetězec, ale okamžitě s ořezáním nepodstatných znaků.

    String(1000) // vrátí "1000"

    Upozorňujeme, že při převodu čísla na řetězec program automaticky přidal mezeru oddělující tisíc. Abyste tomu zabránili, můžete použít následující struktury:

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

    String(Format(1000,"CH=")) // vrátí "1000"

    Citáty v řetězci

    Poměrně často se budete muset vypořádat s nutností vkládat do řetězcové proměnné uvozovky. 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 dva znaky uvozovek.

    Header = String("Horns and Hooves LLC jsme my!") // vrací "Roga and Hooves LLC jsme my!"

    Víceřádkový, zalomení řádku

    Pro vytvoření víceřádkového textu stačí do něj přidat znaky zalomení řádku (Symbols.PS).

    VíceřádkovýText = "První řádek" + Znaky.PS + "Druhý řádek"

    Jak odstranit mezery

    Chcete-li odstranit mezery vpravo nebo vlevo, můžete použít funkci "Stretch()" (stejně jako "Scrpt()" a "ScreenP()"):

    StringWithoutSpaces = ShortLP(" Mnoho písmen ") // funkce vrátí hodnotu "Mnoho písmen"

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

    StringWithoutSpaces = 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:

    StringWithoutSpaces = StrReplace(" ahoj", " ","") // vrátí "ahoj"

    Porovnání řetězců mezi sebou

    Termíny můžete porovnat s obvyklým rovnítkem. Při srovnání se rozlišují velká a malá písmena.

    "ahoj" = "ahoj" // vrátí false
    "Hello" = "Ahoj" // vrátí True
    "Ahoj" = "Sbohem" // vrátí hodnotu False

    Poznámky z zrcadla

    18.08.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 proto, abychom vám poskytli pokročilejší nástroje pro analýzu řetězcových dat. Nové funkce budou pohodlné a užitečné v technologických úlohách analýzy textu. V úlohách souvisejících s analýzou textu, který obsahuje data ve formátované podobě. Může se jednat o analýzu některých souborů přijatých ze zařízení, nebo například analýzu technologického deníku.

    Všechny akce, které nové funkce provádějí, jste mohli provádět dříve. S pomocí více či méně složitých algoritmů napsaných ve vestavěném jazyce. Nové funkce vám tedy nedávají žádné zásadně nové příležitosti. Umožňují vám však snížit množství kódu, zjednodušit kód a učinit jej srozumitelnějším. Navíc umožňují zrychlit provádění akcí. Protože funkce implementované v platformě fungují samozřejmě rychleji než podobný algoritmus napsaný ve vestavěném jazyce.

    Formátovací funkce StrTemplate()

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

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

    <Шаблон>je řetězec, ve kterém se nahradí reprezentace parametrů.

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

    Chcete-li určit konkrétní místo v šabloně, na kterém chcete provést náhradu, musíte použít značky ve tvaru %1, ... %10. Počet značek zapojených do šablony a počet parametrů obsahujících hodnoty se musí shodovat.

    Například výsledek provedení takového operátoru:

    bude tam řádek:

    Chyba dat na řádku 2 (vyžaduje typ data)

    Funkce řetězce StrCompare()

    Tato funkce necitlivě porovnává velikost dvou řetězců. Například takto:

    Před použitím objektu můžete provést stejnou akci Porovnání hodnot:

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

    Funkce řetězců StrBeginsC(), StrEndsTo()

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

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

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

    Tyto funkce rozdělí ř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 logů, technologického deníku. Záznam technologického protokolu můžete například snadno rozložit na části vhodné pro další analýzu:

    Funkce práce s řetězci StrFind()

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

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

    Ve skutečnosti duplikuje schopnosti staré funkce. To se provádí za účelem zachování kompatibility s moduly zkompilovanými ve starších verzích. stará funkce Nalézt() doporučuje se znovu nepouží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, jako je celý název souboru v adrese URL. A vyhledává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.