Neue Funktionen zum Arbeiten mit Strings. Neue Funktionen für die Arbeit mit Strings 1c Position in einem String finden

TEIL 1. METHODEN (26).

1.1. Grundlegende Methoden (10). Unabhängig, basierend auf eigenen einfachen Algorithmen.

Page_Add() (Rechts-Links-Addition mit angegebenen Zeichen).

Page_Inverse () (Invertierung – Zeichen von rechts nach links).

Page_Codes() (Zeichencodes bis „“ und ein Array mit Codes)

Page_Characters() (eine durch „“ getrennte Codefolge oder aus einem Array mit Codes)

Page_ReplaceSymbols() (einige Zeichen durch andere ersetzen).

String_FromArray() (String aus einem Array von Fragmenten, getrennt durch ein Trennzeichen)

Page_FindIn() (Suche nach einem Teilstring (einschließlich rechts) mit einer angegebenen Vorkommensnummer).

Page_FindGr() (Suche nach einer Gruppe von Zeichen, die im angegebenen Zeichensatz enthalten sind)

Page_FindNumber() (Suche nach einer Nummer, auch rechts mit der angegebenen Vorkommensnummer)

Page_Interpret() (in ein Array, gemäß der etablierten Syntax)

1.2. Ableitungsmethoden (12). Tatsächlich handelt es sich dabei um die Verwendung von vier verallgemeinerten Algorithmusmethoden (siehe Teil 2).

Page_Number() (vom Anfang und vom Ende der Zeile, haben Sie keine „Angst“ vor nicht numerischen Zeichen.

Page_Find() (Suche nach einem Teilstring (einschließlich Groß-/Kleinschreibung und rechts) mit einer angegebenen Vorkommensnummer).

Page_Replace() (Suche (einschließlich Groß-/Kleinschreibung und Rechtshänder) und Ersetzen von Trennzeichen-Teilzeichenfolgen).

String_Piece() (ein Stück String zwischen den angegebenen Vorkommen des Trennzeichens (links oder rechts)).

Page_ReplacePiece() (ersetzt „chunk“ in der Quellzeichenfolge durch die angegebene Zeichenfolge).

Page_Array() (zwischen den angegebenen Vorkommen des Trennzeichens (einschließlich derjenigen auf der rechten Seite und ohne Groß-/Kleinschreibung).

Page_TransferBySyllables() (aufgeteilt in Teilzeichenfolgen „Hardly“, mit Bindestrich).

Page_MoveByWords() (aufgeteilt in Teilzeichenfolgen „Softly“)

Page_Cut() („Schneiden“ in Teilzeichenfolgen angegebener Länge)

Str_Shorten() (ersetzen Sie die linke Gruppe von „abgekürzten“ Zeichen durch eine „Ersatzzeichenfolge“

Page_Abbreviation() (ersetzen Sie die rechte Gruppe „reduzierter“ Zeichen durch eine „Ersatzzeichenfolge“)

Str_ShortenS() (in der Mitte der Gruppe „verkürzter“ Zeichen durch eine „Ersatzzeichenfolge“ ersetzen)

Page_Extend (Erweiterung auf eine angegebene Länge durch Erhöhen der Anzahl der angegebenen Zeichen)

1.3. Detaillierte Methoden (3). „Sezieren“ einer Zeile mit Übertragung in eine Tabelle mit Detailinformationen.

Page_vTableIn() (in die Tabelle gemäß dem System der verschachtelten Trennzeichen).

Page_vTableGr (zur Tabelle gemäß einem mehrstufigen Filter).

Page_inTableNumbers (in einer Tabelle mit Zahlen und Fragmenten dazwischen).

TEIL 2. GENERALISIERTE METHODEN-ALGORIMEN (3).

Page_Occurrence() (Methoden „Find“ und „Replace“).

Page_Fragments() (Methoden „Piece“, „ReplacePiece“, „InArray“, „inTableIn“).

Page_Abcr() (Methoden „AbcrL“, „AbcrP“, „AbcrS“, „Expand“.

Page_Split() (Methoden „Nach Silben verschieben“, „Nach Wörtern verschieben“, „Ausschneiden“).

TEIL 3. UNIVERSELLE FUNKTION.

Dies ist eine Art bedingte Programmierschnittstelle, die dies ermöglicht

Wenden Sie mehrere Methoden gleichzeitig auf eine Zeichenfolge an. Implementiert als

Funktionen mit sieben Parametern („Demo“ basiert auf dieser Funktion):

Page_(Methoden, Untermethoden, Eingabe, Param1, Param2, Längenzahl_Position, zusätzliche Ausgabe)

Optionen:

- „Methoden“ – mehrere „kombinierte“ und (oder) eine „exklusive“ Methode

(Einstellige Codes oder Namen, möglich über „,“)

- „Untermethoden“ – mehrere „kombinierte“ und (oder) „exklusive“ Optionen

„exklusive“ Methode (einstellige Codes oder Namen);

- „Eingabe“ – Zeichenfolge, Array oder Wertetabelle;

- „Param1“ – Suchzeichenfolge, Ersetzungen, Trennzeichen, Filter;

- „Param2“ – Ersatzzeichenfolge oder -zeichen;

- „Length_Number_Position“ -Nummer, Zahlen durch ein Trennzeichen oder ein Array mit Zahlen;

- „Zusätzliche Ausgabe“ – Zahl oder Zeichenfolge oder Array oder Wertetabelle;

Namen und/oder einstellige Codes von Untermethoden sowie Nummern in

(Length_Number_Position) kann in jedem Fall und getrennt angegeben werden

eines der folgenden Trennzeichen: „“, „:;“.

TEIL 4. EINIGE BEISPIELE.

Es gibtNumbersInLine=(Str_FindNumber(InLine)<>Nicht definiert);

Es gibt Zahlen in einer Zeile = (String_FindGr(Inline,"+0123456789")>0);

Es gibt Latin = (Str_FindGr(InStr, Str_Interpret("lL"))>0);

There are Specified Signs = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

IsNotPrinted=(Str_FindGr(InxStr, Line_Interpret("-l-L-r-R-P-Z-C"))>0);

TEIL 5. SCHLUSSFOLGERUNG.

Wo es möglich war, habe ich mich mit einem Durchgang entlang der Linie begnügt. Der zweite Durchgang erfolgt normalerweise in Fragmenten. Ich habe die integrierte Funktion StrNumberOccurrences() nicht verwendet.

Es werden integrierte Funktionen verwendet: Left(), Right(), Middle(), StrLength()

- (Das Positionieren und Erhalten eines Teils der Linie muss „schnell“ erfolgen).

Implementiert in Version 8.3.6.1977.

Wir haben den Funktionsumfang für die Arbeit mit Strings erweitert. Wir haben dies getan, um Ihnen erweiterte Tools zum Parsen von String-Daten zur Verfügung zu stellen. Die neuen Funktionen werden bei technologischen Aufgaben der Textanalyse komfortabel und nützlich sein. Bei Aufgaben im Zusammenhang mit dem Parsen von Text, der Daten in formatierter Form enthält. Dies könnte eine Analyse einiger vom Gerät empfangener Dateien oder beispielsweise eine Analyse eines Technologieprotokolls sein.

Sie könnten alle Aktionen ausführen, die zuvor neue Funktionen ausführen. Verwendung mehr oder weniger komplexer Algorithmen, die in einer integrierten Sprache geschrieben sind. Daher eröffnen Ihnen neue Funktionen keine grundsätzlich neuen Möglichkeiten. Sie ermöglichen es Ihnen jedoch, die Codemenge zu reduzieren und den Code einfacher und verständlicher zu machen. Darüber hinaus können Sie damit die Ausführung von Aktionen beschleunigen. Denn die in der Plattform implementierten Funktionen funktionieren natürlich schneller als ein ähnlicher Algorithmus, der in einer integrierten Sprache geschrieben ist.

Formatierungsfunktion StrTemplate()

Diese Funktion ersetzt Parameter in einer Zeichenfolge. Die Notwendigkeit einer solchen Umstellung ergibt sich beispielsweise häufig bei der Anzeige von Warnmeldungen. Die Syntax für diese Funktion lautet wie folgt:

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

<Шаблон>– Dies ist die Zeichenfolge, in die Sie die Parameterdarstellungen ersetzen müssen.

<Значение1> , ... <Значение10>- Dies sind Parameter (maximal zehn), deren Darstellungen in die Zeichenfolge eingesetzt werden müssen.

Um eine bestimmte Stelle in der Vorlage anzugeben, an der Sie die Ersetzung durchführen möchten, müssen Sie Markierungen wie %1, ... %10 verwenden. Die Anzahl der an der Vorlage beteiligten Marker und die Anzahl der Parameter, die Werte enthalten, müssen übereinstimmen.

Das Ergebnis der Ausführung eines solchen Operators ist beispielsweise:

Es wird eine Zeile geben:

Datenfehler in Zeile 2 (Datumstyp erforderlich)

Funktion zum Arbeiten mit Strings StrCompare()

Diese Funktion vergleicht zwei Zeichenfolgen ohne Berücksichtigung der Groß-/Kleinschreibung. Zum Beispiel so:

Sie könnten die gleiche Aktion auch früher mit dem Wertvergleichsobjekt ausführen:

Die Verwendung der neuen Funktion scheint jedoch einfacher zu sein. Darüber hinaus funktioniert die Funktion im Gegensatz zum Wertvergleichsobjekt sowohl im Thin Client als auch im Webclient.

Funktionen zum Arbeiten mit Strings StrStartsWith(), StrEndsAt()

Diese Funktionen bestimmen, ob eine Zeichenfolge mit einer angegebenen Teilzeichenfolge beginnt oder ob eine Zeichenfolge mit einer angegebenen Teilzeichenfolge endet. Der Algorithmus für diese Funktionen ist nicht schwer in einer eingebetteten Sprache zu implementieren, aber ihre Anwesenheit ermöglicht es Ihnen, saubereren und verständlicheren Code zu schreiben. Und sie arbeiten schneller.

Sie lassen sich beispielsweise bequem in der If-Anweisung verwenden:

Funktionen zum Arbeiten mit Strings StrDivide(), StrConnect()

Diese Funktionen teilen eine Zeichenfolge mithilfe eines angegebenen Trennzeichens in Teile auf. Oder umgekehrt: Sie fassen mehrere Zeilen zu einer zusammen und fügen dazwischen das ausgewählte Trennzeichen ein. Sie eignen sich zum Erstellen oder Analysieren von Protokollen und Technologiejournalen. Sie können beispielsweise einen technologischen Protokolleintrag problemlos in Teile zerlegen, die für die weitere Analyse geeignet sind:

Funktion zum Arbeiten mit Strings StrFind()

Anstelle der alten Find()-Funktion haben wir eine neue Funktion implementiert, die über zusätzliche Funktionen verfügt:

  • Suche in verschiedene Richtungen (vom Anfang, vom Ende);
  • Suche von einer bestimmten Position aus;
  • Suchen Sie nach einem Vorkommen mit einer bestimmten Nummer (zweiter, dritter usw.).

Tatsächlich dupliziert es die Fähigkeiten der alten Funktion. Dies geschieht, um die Kompatibilität mit Modulen zu gewährleisten, die in älteren Versionen kompiliert wurden. Es wird empfohlen, die alte Find()-Funktion nicht mehr zu verwenden.

Unten sehen Sie ein Beispiel für die Verwendung der neuen Suchfunktionen. Die umgekehrte Suche ist nützlich, wenn Sie den letzten Teil einer formalisierten Zeichenfolge benötigen, beispielsweise den vollständigen Dateinamen in einer URL. Und die Suche von einer bestimmten Position aus hilft in Fällen, in denen Sie in einem bekannten Fragment und nicht in der gesamten Zeile suchen müssen.

Es gibt nur wenige Mechanismen zum Arbeiten mit Zeichenfolgen in 1C-Abfragen. Zunächst können die Zeilen hinzugefügt werden. Zweitens können Sie einen Teilstring aus einem String übernehmen. Drittens können Zeichenfolgen verglichen werden, auch nach Muster. Das ist wahrscheinlich alles, was man mit Strings machen kann.

String-Addition

Um Zeilen in einer Abfrage hinzuzufügen, wird die Operation „+“ verwendet. Sie können nur Zeichenfolgen mit begrenzter Länge hinzufügen.

WÄHLEN Sie „Name:“ + Gegenparteien. Name AS Spalte 1 FROM Gegenparteien AS Gegenparteien Link = &Link

Teilstringfunktion

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

Ein Analogon der Environment()-Funktion aus dem Objektmodell. Die Funktion Substring() kann auf String-Daten angewendet werden und ermöglicht die Auswahl eines Fragments <Строки> , beginnend mit der Zeichennummer <НачальнаяПозиция> (Zeichen in einer Zeile werden beginnend mit 1 nummeriert) und Länge <Длина> Figuren. Das Ergebnis der Funktionsberechnung hat einen Zeichenfolgentyp variabler Länge, und die Länge wird als unbegrenzt betrachtet, wenn <Строка> hat unbegrenzte Länge und Parameter <Длина> ist keine Konstante oder größer als 1024.

Wenn die Länge der Zeichenfolge kürzer ist als im zweiten Parameter angegeben, gibt die Funktion eine leere Zeichenfolge zurück.

Aufmerksamkeit! Es wird nicht empfohlen, die Funktion SUBSTRING() zum Konvertieren von Zeichenfolgen unbegrenzter Länge in Zeichenfolgen begrenzter Länge zu verwenden. Stattdessen ist es besser, den Cast-Operator EXPRESS() zu verwenden.

Funktion ähnlich

Wenn wir sicherstellen müssen, dass ein String-Attribut bestimmte Kriterien erfüllt, vergleichen wir es:

SELECT Counterparties. Name AS Column 1 FROM Counterparties AS Counterparties WHERE Counterpartys Name = „Gazprom“.

Aber was ist, wenn Sie einen subtileren Vergleich benötigen? Nicht nur Gleichheit oder Ungleichheit, sondern Ähnlichkeit mit einem bestimmten Muster? Genau dafür wurde die SIMILAR-Funktion erstellt.

LIKE – Operator zum Überprüfen einer Zeichenfolge auf Ähnlichkeit mit einem Muster. Analog zu LIKE in SQL.

Mit dem SIMILAR-Operator können Sie den Wert des links davon angegebenen Ausdrucks mit der rechts angegebenen Musterzeichenfolge vergleichen. Der Wert des Ausdrucks muss vom Typ Zeichenfolge sein. Wenn der Wert des Ausdrucks mit dem Muster übereinstimmt, ist das Ergebnis des Operators TRUE, andernfalls FALSE.

Die folgenden Zeichen in der Vorlagenzeichenfolge sind Dienstzeichen und haben eine andere Bedeutung als die Zeichenfolgenzeichen:

  • % (Prozent): eine Sequenz, die eine beliebige Anzahl beliebiger Zeichen enthält;
  • _ (Unterstrich): ein beliebiges Zeichen;
  • […] (ein oder mehrere Zeichen in eckigen Klammern): jedes einzelne Zeichen, das in den eckigen Klammern aufgeführt ist. Die Aufzählung kann Bereiche enthalten, zum Beispiel a-z, was bedeutet, dass ein beliebiges Zeichen im Bereich enthalten ist, einschließlich der Enden des Bereichs;
  • [^...] (in eckigen Klammern ein Negationszeichen, gefolgt von einem oder mehreren Zeichen): jedes einzelne Zeichen, außer denen, die nach dem Negationszeichen aufgeführt sind.

Jedes andere Symbol bedeutet sich selbst und trägt keine zusätzliche Last. Wenn eines der aufgelisteten Zeichen als es selbst geschrieben werden muss, muss ihm ein vorangestellt werden<Спецсимвол>. Ich selbst<Спецсимвол>(jedes geeignete Zeichen) wird in derselben Anweisung nach dem Schlüsselwort SPECIAL CHARACTER definiert.