DZWON

Są tacy, którzy czytają tę wiadomość przed wami.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu

Typ „String” występuje we wszystkich językach programowania. Jest prymitywny, aw 1C jest wiele funkcji do pracy z nim. W tym artykule przyjrzymy się bliżej różnym sposobom pracy z typami ciągów w 1C 8.3 i 8.2 na podstawie przykładów.

Linia

Aby przekonwertować zmienną dowolnego typu na ciąg znaków, istnieje funkcja o tej samej nazwie „String ()”. Parametr wejściowy będzie samą zmienną, której reprezentację w postaci łańcucha należy uzyskać.

String (False) // zwraca „No”
String (12345) // zwraca „12 345”
Ciąg (CurrentDate ()) // 07/21/2017 11:55:36 ″

Na łańcuch można konwertować nie tylko typy pierwotne, ale także inne, np. Elementy podręczników, dokumentów.

SocrLP, SocrL, SocrP

Parametry wejściowe tych funkcji są zmiennymi typu łańcuchowego. Funkcje usuwają nieznaczące znaki (spacje, powrót karetki itp.): Odpowiednio z lewej i prawej strony, tylko z lewej strony i tylko z prawej strony.

AbbrLP ("Spacje po obu stronach zostaną usunięte") // "Spacje po obu stronach zostaną usunięte"
Skrócona („Spacje po obu stronach zostaną usunięte”) // „Spacje po lewej stronie zostaną usunięte”
Skrót („Spacje po obu stronach zostaną usunięte”) // „Spacje po prawej stronie zostaną usunięte”

Leo, racja, środa

Te funkcje pozwalają przyciąć część łańcucha. Funkcja „Lion ()” zwróci część ciągu z jego lewej strony o określonej długości. Funkcja „Right ()” jest taka sama, ale kadrowanie odbywa się po prawej stronie. Funkcja „Med ()” pozwala określić liczbę znaków, z których zostanie wybrany ciąg oraz jego długość.

Lion ("Zmienna ciągowa", 4) // zwraca "Stro"
Right ("String zmienna", 7) // zwraca "zmienna"
Wed ("Zmienna ciągowa", 2, 5) // zwraca "troco"

Długość Str

Funkcja określa liczbę znaków zawartych w zmiennej łańcuchowej.

StrLength ("Word") // wynik wykonania będzie miał numer 5

Znaleźć

Funkcja umożliwia wyszukanie części łańcucha w dowolnej zmiennej łańcuchowej. Wartość zwracana będzie liczbą wskazującą pozycję początku znalezionego ciągu. Jeśli nie zostanie znalezione dopasowanie, zwracane jest zero.

Pamiętaj, że wyszukiwania uwzględniają wielkość liter. Jeśli oryginalny ciąg zawiera więcej niż jedno wystąpienie podciągu wyszukiwania, funkcja zwróci początek pierwszego wystąpienia.

Find ("jeden, dwa, jeden, dwa, trzy", "dwa") // funkcja zwróci liczbę 6

Pusta linia

Użycie tej funkcji pozwala określić, czy ciąg jest pusty. Nieistotne znaki, takie jak spacja, powrót karetki i inne, są ignorowane.

EmptyString ("Pupkin Vasily Ivanovich") // funkcja zwróci wartość False
EmptyString ("") // funkcja zwróci True

VReg, NReg, Treg

Te funkcje są bardzo przydatne do porównywania i konwertowania zmiennych łańcuchowych. Breg () zwróci oryginalny ciąg wielkimi literami, HPreg () małymi, a TRreg () sformatuje go tak, aby pierwszy znak każdego słowa był pisany wielkimi literami, a wszystkie następne były małe.

Vreg ("GENERAL DIRECTOR") // zwraca wartość - "GENERAL DIRECTOR"
НReg ("GENERAL DIRECTOR") // zwraca wartość - "dyrektor generalny"
TREG ("GENERAL DIRECTOR") // zwraca wartość - "Dyrektor Generalny"

PageReplace

Ta funkcja jest analogiczna do zamiany w edytorach tekstu. Pozwala zastąpić jeden znak lub zestaw znaków innym w zmiennych łańcuchowych.

StrReplace ("czerwony, biały, żółty", ",", ";") // zwróci "czerwony; biały; żółty"

StrNumberStrings

Funkcja umożliwia określenie liczby wierszy oddzielonych znakami powrotu karetki w zmiennej tekstowej.

Pętla w poniższym przykładzie przejdzie przez trzy okręgi, ponieważ funkcja RowNumber zwróci 3:

For ind \u003d 1 by StrNumberStrings ("String1" + Symbols.PS + "String2" + Symbols.PS + "String3") Pętla
<тело цикла>
Koniec cyklu;

StrGetString

Ta funkcja działa z tekstem wielowierszowym w taki sam sposób, jak poprzednia. Pozwala uzyskać określony ciąg ze zmiennej tekstowej.

StrGetString ("String1" + Symbols.PS + "String2" + Symbols.PS + "String3", 2) // zwróci „String2”

StrNumber of Occurrences

Funkcja zlicza liczbę wystąpień znaku lub podłańcucha w ciągu wyszukiwania.

StringNumber of Attachments ("a; b; c; d;", \u200b\u200b";") // funkcja zwróci liczbę 4

Symbol i SymbolCode

Te funkcje umożliwiają pobranie znaku na podstawie jego kodu Unicode, a także określenie tego kodu na podstawie samego znaku.

SymbolCode ("A") // funkcja zwróci liczbę 1 040
SymbolCode (1040) // funkcja zwróci „A”

Częste zadania podczas pracy z łańcuchami

Łączenie ciągów

Aby połączyć wiele ciągów (aby wykonać konkatenację), wystarczy użyć operatora dodawania.

"Linia 1 ″ +" Linia 2 ″ // wynikiem dodania dwóch ciągów będzie "Linia 1 Linia 2"

Konwersja typów

Aby przekonwertować typ na łańcuch, np. Odwołanie do pozycji słownika, liczbę itp. Wystarczy użyć funkcji „String ()”. Funkcje takie jak „Abbreviation ()” również konwertują zmienne na ciąg, ale natychmiast z obcięciem nieistotnych znaków.

String (1000) // zwróci „1000”

Należy pamiętać, że podczas konwersji liczby na łańcuch, program automatycznie dodaje spację oddzielającą tysiąc. Aby tego uniknąć, możesz użyć następujących konstrukcji:

StrReplace (String (1000), Characters.NPP, "") // zwróci "1000"

String (Format (1000, "CHG \u003d")) // zwróci "1000"

Cytaty w ciągu znaków

Dość często będziesz musiał zmierzyć się z koniecznością określenia cudzysłowów w zmiennej łańcuchowej. Może to być tekst żądania zapisany w konfiguratorze lub po prostu zmienna. Aby rozwiązać ten problem, wystarczy ustawić dwa cudzysłowy.

Title \u003d String ("Horns and Hooves LLC" - to my! ") // zwraca" Horns and Hoofs LLC - to my! "

Wielowierszowy, podział linii

Aby utworzyć tekst wieloliniowy, wystarczy dodać do niego podziały wierszy (Symbols.PS).

MultilineText \u003d "Pierwsza linia" + Symbols.PS + "Druga linia"

Jak usunąć spacje

Aby usunąć spacje z prawej lub lewej strony, możesz użyć funkcji „Skrót ()” (a także „Skrót ()” i „Skrót ()”):

StringNoSpaces \u003d AbbreviatedLP ("Wiele liter") // funkcja zwróci wartość "Wiele liter"

Jeśli po konwersji liczby na łańcuch chcesz usunąć nierozdzielające spacje, użyj następującej konstrukcji:

StringNoSpaces \u003d StrReplace (String (99999), Characters.NPP, "") // zwróci "99999"

Ponadto programiści często używają następującej konstrukcji, która pozwala usunąć lub zamienić wszystkie spacje zmiennej tekstowej na inny znak:

StringNoSpaces \u003d StrReplace ("witaj", "", "") // zwraca "witaj"

Porównywanie sznurków do siebie

Warunki można porównać ze zwykłym znakiem równości. W porównaniu rozróżniana jest wielkość liter.

„Hello” \u003d „hello” // zwróci wartość False
„Hello” \u003d „Hello” // zwróci True
„Hello” \u003d „Goodbye” // zwróci wartość False

Istnieje kilka mechanizmów pracy z ciągami znaków w zapytaniach 1C. Najpierw można dodać linie. Po drugie, możesz pobrać podciąg z łańcucha. Po trzecie, łańcuchy można porównać, w tym według wzorca. To prawdopodobnie wszystko, co możesz zrobić ze stringami.

Połącz ciągi

Aby dodać ciągi do zapytania, użyj operacji „+”. Można dodawać tylko wiersze o ograniczonej długości.

WYBIERZ "Nazwa:" + Kontrahenci. Nazwa AS Kolumna 1 Z katalogu. Kontrahenci JAKO Kontrahenci GDZIE Kontrahenci. Link \u003d & Link

Funkcja podłańcucha

PODŁOŻE (<Строка>, <НачальнаяПозиция>, <Длина>)

Analog funkcji Environment () z modelu obiektowego. Funkcję Substring () można zastosować do danych typu łańcuchowego i umożliwia ona wybranie fragmentu <Строки> zaczynając od numeru znaku <НачальнаяПозиция> (znaki w ciągu są numerowane od 1) i długość <Длина> postacie. Wynik obliczenia funkcji ma typ łańcucha o zmiennej długości, a długość zostanie uznana za nieograniczoną, jeśli <Строка> ma nieograniczoną długość i parametry <Длина> nie jest stała lub przekracza 1024.

Jeśli długość ciągu jest mniejsza niż określona w drugim parametrze, funkcja zwróci pusty ciąg.

Uwaga! Używanie funkcji SUBSTRING () do konwersji łańcuchów o nieograniczonej długości na łańcuchy o ograniczonej długości nie jest zalecane. Zamiast tego lepiej jest użyć operacji rzutowania EXPRESS ().

Funkcjonować jak

Jeśli musimy się upewnić, że atrybut ciągu spełnia określone kryteria, porównujemy go:

WYBIERZ kontrahentów. Nazwa AS Kolumna 1 Z Katalogu. Kontrahenci AS Kontrahenci GDZIE Kontrahenci. Nazwa \u003d "Gazprom"

Ale co, jeśli chcesz trudniejszego porównania? Nie tylko równość czy nierówność, ale jak pewien wzór? Właśnie do tego została stworzona funkcja LIKE.

LIKE - Operator do sprawdzania łańcucha, takiego jak wzorzec. Analogicznie do LIKE w SQL.

Operator LIKE umożliwia porównanie wartości wyrażenia określonego po jego lewej stronie z ciągiem szablonu określonym po prawej stronie. Wartość wyrażenia musi być typu string. Jeśli wartość wyrażenia pasuje do wzorca, operator zwróci TRUE, w przeciwnym razie będzie FALSE.

Następujące znaki w ciągu szablonu są znakami usługowymi i mają inne znaczenie niż znak ciągu:

  • % (procent): sekwencja zawierająca dowolną liczbę dowolnych znaków;
  • _ (podkreślenie): jeden dowolny znak;
  • […] (Jeden lub więcej znaków w nawiasach kwadratowych): dowolny pojedynczy znak wymieniony w nawiasach kwadratowych. Wyliczenie może zawierać zakresy, na przykład a-z, co oznacza dowolny znak zawarty w zakresie, w tym końce zakresu;
  • [^…] (W nawiasach kwadratowych znak negacji, po którym następuje jeden lub więcej znaków): dowolny pojedynczy znak inny niż te wymienione po znaku negacji.

Każdy inny symbol oznacza sam siebie i nie ma żadnego dodatkowego znaczenia. Jeśli konieczne jest wpisanie jednego z wymienionych znaków jako siebie, należy go poprzedzić<Спецсимвол>... samego siebie<Спецсимвол> (dowolny odpowiedni znak) jest zdefiniowany w tej samej instrukcji po słowie kluczowym SPECIAL CHARACTER.

Notatki z lustra

08/18/2014 Nowe funkcje do pracy ze stringami

Zaimplementowano w wersji 8.3.6.1977.

Rozszerzyliśmy zestaw funkcji do pracy z napisami. Zrobiliśmy to, aby zapewnić bardziej zaawansowane narzędzia do analizowania danych ciągów. Nowe funkcje będą wygodne i przydatne w technologicznych zadaniach analizy tekstu. W zadaniach związanych z analizowaniem tekstu zawierającego sformatowane dane. Może to być analiza niektórych plików otrzymanych z urządzenia lub np. Analiza dziennika technologicznego.

Wszystkie czynności, które wykonują nowe funkcje, które mógłbyś wykonać wcześniej. Z pomocą mniej lub bardziej złożonych algorytmów napisanych w języku embedded. Dlatego nowe funkcje nie dają zupełnie nowych możliwości. Mogą jednak zmniejszyć ilość kodu, uczynić go prostszym i łatwiejszym do zrozumienia. A poza tym pozwalają przyspieszyć wykonywanie działań. Bo funkcje zaimplementowane w platformie działają oczywiście szybciej niż podobny algorytm napisany w języku embedded.

Funkcja formatowania StrPattern ()

Ta funkcja zastępuje parametry w ciągu. Potrzeba takiej konwersji często pojawia się np. Przy wyświetlaniu komunikatów ostrzegawczych. Składnia tej funkcji jest następująca:

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

<Шаблон> jest łańcuchem zastępującym reprezentacje parametrów.

<Значение1> , ... <Значение10> - są to parametry (maksymalnie - dziesięć), których reprezentacje należy podstawić do ciągu.

Aby wskazać konkretne miejsce w szablonie, w którym chcesz wykonać podstawienie, musisz użyć tokenów, takich jak% 1, ...% 10. Liczba znaczników użytych w szablonie i liczba parametrów zawierających wartości muszą być zgodne.

Na przykład wynik wykonania takiej instrukcji:

będzie linia:

Błąd danych w linii 2 (wymagany typ daty)

Funkcja do pracy z ciągami znaków StrCompare ()

Ta funkcja porównuje dwa ciągi bez rozróżniania wielkości liter. Na przykład tak:

Mogłeś wykonać tę samą czynność przed użyciem obiektu Porównanie wartości:

Jednak użycie nowej funkcji wygląda na prostsze. A poza tym funkcja, w przeciwieństwie do obiektu Porównanie wartości, działa zarówno w kliencie uproszczonym, jak i kliencie internetowym.

Funkcje do pracy z ciągami RowStart With (), RREnd With ()

Te funkcje określają, czy ciąg zaczyna się od określonego podciągu, czy kończy się określonym podciągiem. Algorytm tych funkcji jest łatwy do zaimplementowania w języku osadzonym, ale ich obecność pozwala na pisanie czystszego i bardziej zrozumiałego kodu. I działają szybciej.

Na przykład wygodnie jest ich używać w operatorze Jeśli:

Funkcje do pracy z ciągami znaków StrSplit (), StrConnect ()

Te funkcje dzielą ciąg na części zgodnie z określonym separatorem. Lub odwrotnie, łączą kilka linii w jedną, wstawiając między nimi wybrany separator. Są wygodne do tworzenia lub analizowania logów, logów technologicznych. Przykładowo możesz łatwo rozłożyć zapis dziennika technologicznego na części nadające się do dalszej analizy:

Funkcja do pracy z napisami StrFind ()

Zamiast starej funkcji Znaleźć() wdrożyliśmy nową funkcję, która ma dodatkowe możliwości:

  • Szukaj w różnych kierunkach (od początku, od końca);
  • Szukaj z określonej pozycji;
  • Wyszukaj wystąpienie o określonej liczbie (drugie, trzecie itd.).

W rzeczywistości powiela możliwości starej funkcji. Odbywa się to w celu zachowania kompatybilności z modułami skompilowanymi w starszych wersjach. Stara funkcja Znaleźć() nie zaleca się ponownego użycia.

Poniżej znajduje się przykład wykorzystujący nowe możliwości wyszukiwania. Wyszukiwanie wstecz jest przydatne, gdy potrzebny jest ostatni fragment sformalizowanego ciągu, na przykład pełna nazwa pliku w adresie URL. A wyszukiwanie z określonej pozycji pomaga w przypadkach, gdy trzeba szukać w znanym fragmencie, a nie w całym ciągu.

Ciągi znaków w 1C 8.3 we wbudowanym języku 1C są wartościami typu pierwotnego Linia... Wartości tego typu zawierają ciąg znaków Unicode o dowolnej długości. Zmienne typu string to zestaw znaków ujęty w cudzysłów.

Przykład 1. Stwórzmy zmienną łańcuchową z tekstem.

StringVariable \u003d "Witaj świecie!";

Funkcje do pracy ze stringami w 1c 8.3

W tej sekcji znajdziesz główne funkcje, które pozwolą Ci zmienić linie w 1c lub przeanalizować zawarte w nich informacje.

Długość Str

StrLength (<Строка>) ... Zwraca liczbę znaków zawartych w ciągu przekazanym w parametrze.

Przykład 2. Policzmy liczbę znaków w ciągu „Hello world!”

String \u003d "Witaj świecie!"; Liczba znaków \u003d StrLength (String); Raport (liczba znaków);

Wynikiem wykonania tego kodu będzie wyświetlenie ilości znaków w ciągu: 11.

Skrót

AbbrL (<Строка>) ... Obcina nieistotne znaki na lewo od pierwszego znaczącego znaku w ciągu.
Drobne postacie:

  • przestrzeń;
  • nierozerwalna przestrzeń;
  • tabulacja;
  • powrót karetki;
  • tłumaczenie linii;
  • tłumaczenie formularza (strona).

Przykład 3. Usuń wszystkie spacje z lewej strony wiersza „świat!” i dołącz do niego wiersz „Hello”.

String \u003d w skrócie ("pokój!"); String \u003d "Hello" + String; Raport (ciąg);

Wynikiem wykonania tego kodu będzie wynik wiersza „Hello world!”

Skrót

Skrót (<Строка>) ... Obcina nieistotne znaki na prawo od pierwszego znaczącego znaku w ciągu.

Przykład 4. Formularz „Hello” i „World!” fraza „Witaj, świecie!”

String \u003d w skrócie ("Witaj") + "" + w skrócie ("świat!"); Raport (ciąg);

SokrLP

SocrLP (<Строка>) ... Obcina nieistotne znaki na prawo od pierwszego znaczącego znaku w ciągu, a także wycina nieistotne znaki na lewo od pierwszego znaczącego znaku w ciągu. Ta funkcja jest używana częściej niż dwie poprzednie, ponieważ jest bardziej wszechstronna.

Przykład 5. Usuń nieznaczące znaki po lewej i prawej stronie w imieniu kontrahenta.

Kontrahent \u003d Directories.Contractors.NaytiPoRequisite ("INN", "0777121211"); CounterpartyObject \u003d Counterparty.GetObject (); CounterpartyObject.Name \u003d SkrótLP (CounterpartyObject.Name); CounterpartyObject.Write ();

Lew

Lew(<Строка>, <ЧислоСимволов>) ... Pobiera pierwsze znaki ciągu, liczbę znaków określono w parametrze Liczba znaków.

Przykład 6. Wpuść konstrukcję Pracownik zawierać imię, nazwisko i patronimię pracownika. Zdobądź ciąg z nazwiskiem i inicjałami.

InitialName \u003d Leo (Employee.Name, 1); Patronimic Initial \u003d Leo (Pracownik, Patronimic, 1); FullName \u003d Employee.Lastname + "" + InitialName + "." + Patronimic Initial + ".";

Dobrze

Dobrze (<Строка>, <ЧислоСимволов>) ... Pobiera ostatnie znaki ciągu, liczbę znaków określono w parametrze Liczba znaków. Jeśli określona liczba znaków przekracza długość ciągu, zwracany jest cały ciąg.

Przykład 7. Załóżmy, że koniec zmiennej łańcuchowej zawiera datę w formacie „rrrrmmdd”, pobierz ciąg z datą i przekonwertuj go na typ data.

String \u003d "Bieżąca data: 20170910"; StringDate \u003d Right (String, 8); Date \u003d Date (StringDate);

środa

Środa (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) ... Pobiera podciąg z ciągu przekazanego jako parametr Linia, zaczynając od znaku, którego numer jest określony w parametrze StartNumber i długość przekazaną do parametru Liczba znaków.Numeracja znaków w linii zaczyna się od 1. Jeżeli parametr StartNumber określona jest wartość mniejsza lub równa zero, wówczas parametr przyjmuje wartość 1. Jeśli parametr Liczba symboli nie jest określony, wybierane są znaki do końca wiersza.

Przykład 8. Niech zmienna typu string zaczynająca się od dziewiątej pozycji zawiera kod regionu, powinieneś go pobrać i zapisać w osobnym wierszu.

Line \u003d "Region: 99 Moskwa"; Region \u003d środa (linia, 9, 2);

Szukaj

Szukaj (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) ... Wyszukuje określony podciąg w ciągu, zwraca numer pozycji pierwszego znaku znalezionego podciągu. Rozważ parametry tej funkcji:

  • Linia... Ciąg źródłowy;
  • SubstringSearch... Wyszukiwanie podciągu;
  • Kierunek wyszukiwania... Określa kierunek wyszukiwania podciągu w ciągu. Może przyjmować wartości:
    • Kierunek wyszukiwania: od początku;
    • Kierunek wyszukiwania.;
  • Pozycja początkowa... Określa pozycję w ciągu, od której rozpoczyna się wyszukiwanie;
  • Liczba wejść... Określa liczbę wystąpień żądanego podciągu w oryginalnym ciągu.

Przykład 9. W wierszu „Witaj, świecie!” określić miejsce ostatniego wystąpienia symbolu „i”.

PositionNumber \u003d StrFind ("Witaj świecie!", "And", DirectionSearch.End); Raport (numer pozycji);

Wynikiem wykonania tego kodu będzie wyświetlenie numeru ostatniego wystąpienia symbolu „i”: 9.

Vreg

BReg (<Строка>) ... Konwertuje wszystkie znaki w określonym ciągu od 1 do 8 na wielkie litery.

Przykład 10. Przekonwertuj ciąg „hello world!” na wielkie litery.

StringBreg \u003d BReg ("witaj świecie!"); Raport (StringVreg);

Wynikiem wykonania tego kodu będzie wyświetlenie wiersza „HELLO WORLD!”

Nreg

HReg (<Строка>) ... Konwertuje wszystkie znaki w określonym ciągu od 1 do 8 na małe litery.

Przykład 11. Przekonwertuj ciąg „HELLO WORLD!” małymi literami.

StringNreg \u003d НReg ("HELLO WORLD!"); Raport (StringVreg);

Wynikiem wykonania tego kodu będzie wyjście wiersza „hello world!”

Treg

Treg (<Строка>) ... Konwertuje ciąg w następujący sposób: pierwszy znak każdego słowa jest konwertowany na wielką literę, pozostałe znaki słowa są konwertowane na małe litery.

Przykład 12. Zamień pierwsze litery słów w wierszu „hello world!”

StringTreg \u003d Treg ("witaj świecie!"); Raport (StringTreg);

Rezultatem wykonania tego kodu będzie wyświetlenie wiersza „Hello World!”

Symbol

Symbol(<КодСимвола>) ... Pobiera znak według kodu Unicod.

Przykład 13. Dodaj lewy i prawy wiersz „Hello World!” symbol ★

StringWithStars \u003d Symbol („9733”) + „Witaj świecie!” + Symbol („9733”); Report (StringWithStars);

Wynikiem wykonania tego kodu będzie wynik wiersza „★ Hello World! ★”

SymbolCode

SymbolCode (<Строка>, <НомерСимвола>) ... Pobiera kod znaku Unicode z ciągu określonego w pierwszym parametrze, znajdującego się w pozycji określonej w drugim parametrze.

Przykład 14. Znajdź kod ostatniego znaku w „Hello World!”

String \u003d "Witaj świecie!"; CharacterCode \u003d CharacterCode (String, StrLength (String)); Raport (SymbolCode);

Wynikiem wykonania tego kodu będzie wyświetlenie kodu symbolu „!” - 33.

Pusta linia

Pusta linia (<Строка>) ... Sprawdza, czy ciąg zawiera tylko nieznaczące znaki, czyli czy jest pusty.

Przykład 15. Sprawdź, czy ciąg składający się z trzech spacji jest pusty.

Empty \u003d EmptyString (""); Raport (pusty);

Wynikiem wykonania tego kodu będzie wyświetlenie słowa „Tak” (wyrażenie łańcuchowe wartości logicznej Prawdziwe).

PageReplace

PReplace (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) ... Znajduje wszystkie wystąpienia podciągu wyszukiwania w oryginalnym ciągu i zastępuje go podciągiem zastępczym.

Przykład 16. W wierszu „Hello World!” zastąpić słowo „Pokój” słowem „Przyjaciele”.

String \u003d StrReplace ("Witaj świecie!", "Świat", "Przyjaciele"); Raport (ciąg);

Rezultatem wykonania tego kodu będzie wyświetlenie wiersza „Hello Friends!”

StrNumberStrings

Numer wiersza (<Строка>) ... Zlicza liczbę wierszy w ciągu wieloliniowym. Aby przejść do nowej linii w 1s 8, użyj znaku PS (znak nowego wiersza).

Przykład 17. Określ liczbę wierszy w tekście:
"Pierwsza linia
Druga linia
Trzecia linia "

Number \u003d StrNumberStrings ("Pierwsza linia" + Symbols.PS + "Druga linia" + Symbols.PS + "Trzecia linia"); Numer raportu);

Rezultatem wykonania tego kodu będzie wyświetlenie liczby wierszy w tekście: 3

StrGetString

StrGetString (<Строка>, <НомерСтроки>) ... Pobiera ciąg w ciągu wielowierszowym według jego numeru. Numeracja linii zaczyna się od 1.

Przykład 18. Pobierz ostatnią linię w tekście:
"Pierwsza linia
Druga linia
Trzecia linia "

Tekst \u003d "Pierwsza linia" + Symbols.PS + "Druga linia" + Symbols.PS + "Trzecia linia"; LastString \u003d StrGetString (Text, StrNumberLines (Text)); Raport (LastLine);

Wynikiem wykonania tego kodu będzie wyświetlenie wiersza „Trzecia linia”.

StrNumber of Occurrences

StrNumber of Occurrences (<Строка>, <ПодстрокаПоиска>) ... Zwraca liczbę wystąpień określonego podciągu w ciągu. Funkcja rozróżnia wielkość liter.

Przykład 19. Określ, ile razy litera „c” występuje w ciągu „Wiersze w 1s 8.3 i 8.2”, niezależnie od wielkości liter.

Line \u003d "Linie w 1s 8.3 i 8.2"; Number of Occurrences \u003d StrNumber of Occurrences (Vreg (String), "S"); Raport (liczba zdarzeń);

Rezultatem wykonania tego kodu będzie wyświetlenie ilości wystąpień: 2.

Strona zaczyna się od

Strona zaczyna się od (<Строка>, <СтрокаПоиска>) ... Sprawdza, czy ciąg przekazany w pierwszym parametrze zaczyna się od ciągu w drugim parametrze.

Przykład 20. Ustal, czy numer INN wybranego kontrahenta zaczyna się od cyfry 1. Wprowadź zmienną Kontrahent wykonawcy.

NIP \u003d kontrahenta.INN; Rozpoczyna się odUnits \u003d StrRozpoczyna się od (INN, "1"); If BeginsUnits Then // Twój kod EndIf;

Strona kończy się na

PageEnds With (<Строка>, <СтрокаПоиска>) ... Sprawdza, czy ciąg przekazany w pierwszym parametrze kończy się ciągiem w drugim parametrze.

Przykład 21. Określić, czy NIP wybranego kontrahenta kończy się cyfrą 2. Wpuść zmienną Kontrahentprzechowywane jest łącze do pozycji katalogu wykonawcy.

NIP \u003d kontrahenta.INN; Kończy się na dwa \u003d ciąg kończy się na (INN, "2"); Jeśli kończy się na Double Then // Twój kod EndIf;

PageSplit

StrSplit (<Строка>, <Разделитель>, <ВключатьПустые>) ... Dzieli ciąg na części przy użyciu określonych znaków ogranicznika i zapisuje otrzymane ciągi do tablicy. Pierwszy parametr przechowuje oryginalny ciąg, drugi zawiera ciąg zawierający separator, trzeci określa, czy zapisywać puste ciągi do tablicy (domyślnie Prawdziwe).

Przykład 22. Załóżmy, że mamy ciąg zawierający liczby oddzielone znakiem „;”, pobierz tablicę liczb z ciągu.

String \u003d "1; 2; 3"; Array \u003d StrSplit (String, ";"); Dla Rd \u003d 0 By Array.Quantity () - 1 próba cyklu Array [Rd] \u003d Number (AbbrLP (Array [Rd])); Tablica wyjątków [Сч] \u003d 0; Koniec prób Koniec pętli;

W wyniku wykonania zostanie uzyskana tablica o numerach od 1 do 3.

StrConnect

StrConnect (<Строки>, <Разделитель>) ... Konwertuje tablicę ciągów z pierwszego parametru na ciąg zawierający wszystkie elementy tablicy, oddzielone ogranicznikiem określonym w drugim parametrze.

Przykład 23. Korzystając z tablicy liczb z poprzedniego przykładu, pobierz oryginalny ciąg.

For Ref \u003d 0 By Array.Quantity () - 1 Loop Array [Ref] \u003d String (Array [Ref]); Koniec cyklu; String \u003d StrConnect (Array, ";");

Zaimplementowano w wersji 8.3.6.1977.

Rozszerzyliśmy zestaw funkcji do pracy z napisami. Zrobiliśmy to, aby zapewnić bardziej zaawansowane narzędzia do analizowania danych ciągów. Nowe funkcje będą wygodne i przydatne w technologicznych zadaniach analizy tekstu. W zadaniach związanych z analizowaniem tekstu zawierającego sformatowane dane. Może to być analiza niektórych plików otrzymanych z urządzenia lub np. Analiza dziennika technologicznego.

Wszystkie czynności, które wykonują nowe funkcje, które mógłbyś wykonać wcześniej. Z pomocą mniej lub bardziej złożonych algorytmów napisanych w języku embedded. Dlatego nowe funkcje nie dają zupełnie nowych możliwości. Mogą jednak zmniejszyć ilość kodu, uczynić go prostszym i łatwiejszym do zrozumienia. A poza tym pozwalają przyspieszyć wykonywanie działań. Bo funkcje zaimplementowane w platformie działają oczywiście szybciej niż podobny algorytm napisany w języku embedded.

Funkcja formatowania StrPattern ()

Ta funkcja zastępuje parametry w ciągu. Potrzeba takiej konwersji często pojawia się np. Przy wyświetlaniu komunikatów ostrzegawczych. Składnia tej funkcji jest następująca:

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

<Шаблон> jest łańcuchem zastępującym reprezentacje parametrów.

<Значение1> , ... <Значение10> - są to parametry (maksymalnie - dziesięć), których reprezentacje należy podstawić do ciągu.

Aby wskazać konkretne miejsce w szablonie, w którym chcesz wykonać podstawienie, musisz użyć tokenów, takich jak% 1, ...% 10. Liczba znaczników użytych w szablonie i liczba parametrów zawierających wartości muszą być zgodne.

Na przykład wynik wykonania takiej instrukcji:

będzie linia:

Błąd danych w linii 2 (wymagany typ daty)

Funkcja do pracy z ciągami znaków StrCompare ()

Ta funkcja porównuje dwa ciągi bez rozróżniania wielkości liter. Na przykład tak:

Mogłeś wykonać tę samą akcję wcześniej, używając obiektu Porównanie wartości:

Jednak użycie nowej funkcji wygląda na prostsze. Poza tym funkcja, w przeciwieństwie do obiektu Porównanie wartości, działa zarówno w cienkim kliencie, jak iw kliencie internetowym.

Funkcje do pracy z ciągami RowStart With (), RREnd With ()

Te funkcje określają, czy ciąg zaczyna się od określonego podciągu, czy kończy się określonym podciągiem. Algorytm tych funkcji jest łatwy do zaimplementowania w języku osadzonym, ale ich obecność pozwala na pisanie czystszego i bardziej zrozumiałego kodu. I działają szybciej.

Na przykład są wygodne w użyciu w If:

Funkcje do pracy z ciągami znaków StrSplit (), StrConnect ()

Te funkcje dzielą ciąg na części zgodnie z określonym separatorem. Lub odwrotnie, łączą kilka linii w jedną, wstawiając między nimi wybrany separator. Są wygodne do tworzenia lub analizowania logów, logów technologicznych. Przykładowo możesz łatwo rozłożyć zapis dziennika technologicznego na części nadające się do dalszej analizy:

Funkcja do pracy z napisami StrFind ()

Zamiast starej funkcji Find () zaimplementowaliśmy nową funkcję, która ma dodatkowe możliwości:

  • Szukaj w różnych kierunkach (od początku, od końca);
  • Szukaj z określonej pozycji;
  • Wyszukaj wystąpienie o określonej liczbie (drugie, trzecie itd.).

W rzeczywistości powiela możliwości starej funkcji. Odbywa się to w celu zachowania kompatybilności z modułami skompilowanymi w starszych wersjach. Zaleca się, aby nie używać już starej funkcji Find ().

Poniżej znajduje się przykład wykorzystujący nowe możliwości wyszukiwania. Wyszukiwanie wstecz jest przydatne, gdy potrzebny jest ostatni fragment sformalizowanego ciągu, na przykład pełna nazwa pliku w adresie URL. A wyszukiwanie z określonej pozycji pomaga w przypadkach, gdy trzeba szukać w znanym fragmencie, a nie w całym ciągu.

DZWON

Są tacy, którzy czytają tę wiadomość przed wami.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu