Λειτουργίες συμβολοσειράς 1c. Νέες λειτουργίες για εργασία με χορδές

Ο τύπος String βρίσκεται σε όλες τις γλώσσες προγραμματισμού. Είναι πρωτόγονο και στο 1C υπάρχουν πολλές λειτουργίες για να δουλέψετε μαζί του. Σε αυτό το άρθρο θα ρίξουμε μια πιο προσεκτική ματιά διάφορους τρόπουςεργασία με τύπους συμβολοσειρών στο 1C 8.3 και 8.2 χρησιμοποιώντας παραδείγματα.

Γραμμή

Για να μετατρέψετε μια μεταβλητή οποιουδήποτε τύπου σε συμβολοσειρά, υπάρχει μια συνάρτηση με το ίδιο όνομα "String()". Η παράμετρος εισόδου θα είναι η ίδια η μεταβλητή, η παράσταση συμβολοσειράς της οποίας πρέπει να ληφθεί.

String(False) // επιστρέφει "Όχι"
Το String(12345) // επιστρέφει "12.345"
String(Τρέχουσα Ημερομηνία()) //"07/21/2017 11:55:36″

Είναι δυνατή η μετατροπή όχι μόνο πρωτόγονων τύπων σε συμβολοσειρά, αλλά και άλλων, για παράδειγμα, στοιχείων καταλόγων και εγγράφων.

SokrLP, SokrL, SokrP

Οι παράμετροι εισόδου αυτών των συναρτήσεων είναι μια μεταβλητή τύπου συμβολοσειράς. Οι συναρτήσεις αφαιρούν ασήμαντους χαρακτήρες (κενά, επιστροφές μεταφοράς κ.λπ.): από την αριστερή και τη δεξιά πλευρά, μόνο από την αριστερή πλευρά και μόνο από τη δεξιά, αντίστοιχα.

Συντομογραφία (" Τα κενά θα αφαιρεθούν και στις δύο πλευρές ") // "Τα κενά θα αφαιρεθούν και στις δύο πλευρές"
Συντομογραφία (" Τα κενά και στις δύο πλευρές θα αφαιρεθούν ") // " Τα κενά στα αριστερά θα αφαιρεθούν "
Συντομογραφία (" Τα κενά και στις δύο πλευρές θα αφαιρεθούν ") // " Τα κενά στα δεξιά θα αφαιρεθούν"

Λέων, Δεξιά, Μεσαίο

Αυτές οι λειτουργίες σάς επιτρέπουν να κόψετε μέρος μιας συμβολοσειράς. Η συνάρτηση "Left()" θα επιστρέψει το τμήμα μιας συμβολοσειράς από την αριστερή πλευρά του καθορισμένου μήκους. Η συνάρτηση "Right()" είναι παρόμοια, αλλά γίνεται περικοπή από τα δεξιά. Η συνάρτηση "Avg()" σάς επιτρέπει να καθορίσετε τον αριθμό του χαρακτήρα από τον οποίο θα επιλεγεί η γραμμή και το μήκος της.

Lev("String variable", 4) // επιστρέφει "Str"
Right("String variable", 7) // επιστρέφει "variable"
Medium("String variable", 2, 5) // επιστρέφει "troco"

StrLength

Η συνάρτηση καθορίζει τον αριθμό των χαρακτήρων που περιέχονται σε μια μεταβλητή συμβολοσειράς.

StrLength("Word") // το αποτέλεσμα της εκτέλεσης θα είναι ο αριθμός 5

Εύρημα

Η συνάρτηση καθιστά δυνατή την αναζήτηση μέρους μιας συμβολοσειράς σε μια μεταβλητή συμβολοσειράς. Η επιστρεφόμενη τιμή θα είναι ένας αριθμός που δείχνει τη θέση της αρχής της συμβολοσειράς που βρέθηκε. Εάν δεν βρεθεί αντιστοιχία, επιστρέφεται το μηδέν.

Λάβετε υπόψη ότι η αναζήτηση γίνεται με διάκριση πεζών-κεφαλαίων. Εάν υπάρχουν περισσότερες από μία εμφανίσεις της υποσυμβολοσειράς αναζήτησης στην αρχική συμβολοσειρά, η συνάρτηση θα επιστρέψει την αρχή της πρώτης εμφάνισης.

Η συνάρτηση Find("ένα, δύο, ένα, δύο, τρία", "δύο") // θα επιστρέψει τον αριθμό 6

Κενή γραμμή

Η χρήση αυτής της συνάρτησης σάς επιτρέπει να προσδιορίσετε εάν μια συμβολοσειρά είναι κενή. Οι δευτερεύοντες χαρακτήρες, όπως το διάστημα, η επιστροφή και άλλοι δεν λαμβάνονται υπόψη.

Η συνάρτηση EmptyString("Pupkin Vasily Ivanovich") // θα επιστρέψει την τιμή False
Η συνάρτηση EmptyString(" ") // θα επιστρέψει την τιμή True

VReg, NReg, Treg

Αυτές οι συναρτήσεις είναι πολύ χρήσιμες κατά τη σύγκριση και τη μετατροπή μεταβλητών συμβολοσειρών. Το "Vreg()" θα επιστρέψει την αρχική συμβολοσειρά με κεφαλαία, το "HPreg()" με πεζά και το "Treg()" θα το μορφοποιήσει έτσι ώστε ο πρώτος χαρακτήρας κάθε μεμονωμένης λέξης να γράφεται με κεφαλαία και όλοι οι επόμενοι χαρακτήρες να γράφονται με κεφαλαία.

Vreg("ΓΕΝΙΚΟΣ ΔΙΕΥΘΥΝΤΗΣ") // επιστροφή τιμή - "ΓΕΝΙΚΟΣ ΔΙΕΥΘΥΝΤΗΣ"
NReg ("CEO DIRECTOR") // τιμή επιστροφής - "CEO"
TREG ("CEO DIRECTOR") // τιμή επιστροφής - "Γενικός Διευθυντής"

Αντικατάσταση σελίδας

Αυτή η λειτουργία είναι ανάλογη με την αντικατάσταση σε συντάκτες κειμένου. Σας επιτρέπει να αντικαταστήσετε έναν χαρακτήρα ή σύνολο χαρακτήρων με ένα άλλο σε μεταβλητές συμβολοσειράς.

StrReplace("κόκκινο, λευκό, κίτρινο", ","", ";") // επιστρέφει "κόκκινο; άσπρο; κίτρινος"

StrNumberLines

Η συνάρτηση σάς επιτρέπει να προσδιορίσετε τον αριθμό των γραμμών που χωρίζονται από επιστροφές μεταφοράς σε μια μεταβλητή κειμένου.

Ο βρόχος στο παρακάτω παράδειγμα θα περάσει από τρεις γύρους επειδή η συνάρτηση LineNumberRow θα επιστρέψει την τιμή 3:

Για ind = 1 κατά StrNumber of Strings ("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") Κύκλος
<тело цикла>
EndCycle;

StrGetString

Αυτή η συνάρτηση λειτουργεί με κείμενο πολλών γραμμών με τον ίδιο τρόπο όπως η προηγούμενη. Σας επιτρέπει να λάβετε μια συγκεκριμένη συμβολοσειρά από μια μεταβλητή κειμένου.

StrGetString("String1" + Characters.PS + "String2" + Characters.PS + "String3", 2) // επιστροφή "String2"

ΣελίδαΑριθμόςΕκδηλώσεις

Η συνάρτηση μετράει τον αριθμό των εμφανίσεων ενός χαρακτήρα ή υποσυμβολοσειράς στη συμβολοσειρά αναζήτησης.

Η συνάρτηση StrNumberAttachments("a;b;c;d; ", ";") // θα επιστρέψει τον αριθμό 4

Σύμβολο και κωδικός συμβόλου

Αυτές οι λειτουργίες σάς επιτρέπουν να αποκτήσετε έναν χαρακτήρα από τον κωδικό του στην κωδικοποίηση Unicode, καθώς και να προσδιορίσετε αυτόν τον κωδικό από τον ίδιο τον χαρακτήρα.

Η συνάρτηση SymbolCode("A") // θα επιστρέψει τον αριθμό 1.040
Η συνάρτηση CharacterCode(1040) // θα επιστρέψει "A"

Συνήθεις εργασίες κατά την εργασία με χορδές

Συνδεόμενες χορδές

Για να συνδυάσετε πολλές χορδές (για να πραγματοποιήσετε συνένωση), αρκεί να χρησιμοποιήσετε τον τελεστή πρόσθεσης.

"Γραμμή 1″ + "Γραμμή 2" //το αποτέλεσμα της προσθήκης δύο γραμμών θα είναι "Γραμμή 1 Γραμμή 2"

Μετατροπή τύπου

Για να μετατρέψετε έναν τύπο σε συμβολοσειρά, για παράδειγμα, έναν σύνδεσμο προς ένα στοιχείο καταλόγου, έναν αριθμό κ.λπ., αρκεί να χρησιμοποιήσετε τη συνάρτηση "String()". Συναρτήσεις όπως η "ScrLP()" θα μετατρέψουν επίσης τις μεταβλητές σε μια συμβολοσειρά, αλλά αμέσως με αποκοπή ασήμαντων χαρακτήρων.

Το String(1000) // επιστρέφει "1.000"

Λάβετε υπόψη ότι κατά τη μετατροπή ενός αριθμού σε συμβολοσειρά, το πρόγραμμα πρόσθεσε αυτόματα ένα διάστημα που χωρίζει το χίλιο. Για να αποφύγετε αυτό, μπορείτε να χρησιμοποιήσετε τις ακόλουθες κατασκευές:

StrReplace(String(1000),Characters.NPP,"") // επιστρέφει "1000"

String(Format(1000,"HG=")) // επιστρέφει "1000"

Εισαγωγικά σε μια συμβολοσειρά

Αρκετά συχνά θα πρέπει να αντιμετωπίσετε την ανάγκη να καθορίσετε εισαγωγικά σε μια μεταβλητή συμβολοσειράς. Αυτό μπορεί να είναι είτε το κείμενο αίτησης γραμμένο στον διαμορφωτή, είτε απλώς μια μεταβλητή. Για να λύσετε αυτό το πρόβλημα, πρέπει απλώς να ορίσετε δύο εισαγωγικά.

Header = String("Horns and Hooves LLC - that's us!") // θα επιστρέψει "Horns and Hooves LLC - that's us!"

Πολλαπλή γραμμή, αλλαγή γραμμής

Για να δημιουργήσετε κείμενο πολλών γραμμών, απλώς προσθέστε αλλαγές γραμμής (Symbols.PS) σε αυτό.

MultilineText = "First Line" + Symbols.PS + "Second Line"

Πώς να αφαιρέσετε κενά

Για να αφαιρέσετε κενά στα δεξιά ή στα αριστερά, μπορείτε να χρησιμοποιήσετε τη συνάρτηση "ScrAP()" (καθώς και "ScrL()" και "ScrP()"):

StringNoSpaces = Συντομογραφία (" Πολλά γράμματα ") // η συνάρτηση θα επιστρέψει την τιμή "Πολλά γράμματα"

Εάν, μετά τη μετατροπή ενός αριθμού σε συμβολοσειρά, πρέπει να αφαιρέσετε κενά που δεν διακόπτουν, χρησιμοποιήστε την ακόλουθη κατασκευή:

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // επιστρέφει "99999"

Οι προγραμματιστές χρησιμοποιούν επίσης συχνά την ακόλουθη κατασκευή, η οποία σας επιτρέπει να αφαιρέσετε ή να αντικαταστήσετε με έναν άλλο χαρακτήρα όλα τα κενά σε μια μεταβλητή κειμένου:

StringNoSpaces = StrReplace("hello","") // επιστρέφει "γεια"

Σύγκριση χορδών μεταξύ τους

Μπορείτε να συγκρίνετε όρους με το συνηθισμένο πρόσημο ίσου. Η σύγκριση είναι διάκριση πεζών-κεφαλαίων.

"Hello" = "γεια" // επιστρέφει False
"Hello" = "Hello" // επιστρέφει True
"Hello" = "Αντίο" // επιστρέφει False

Υπάρχουν λίγοι μηχανισμοί για εργασία με συμβολοσειρές σε ερωτήματα 1C. Αρχικά, μπορούν να προστεθούν οι γραμμές. Δεύτερον, μπορείτε να πάρετε μια υποσυμβολοσειρά από μια συμβολοσειρά. Τρίτον, οι χορδές μπορούν να συγκριθούν, συμπεριλαμβανομένου του σχεδίου. Αυτό είναι ίσως το μόνο που μπορεί να γίνει με χορδές.

Προσθήκη χορδής

Για να προσθέσετε σειρές σε ένα ερώτημα, χρησιμοποιείται η λειτουργία "+". Μπορείτε να προσθέσετε μόνο χορδές περιορισμένου μήκους.

ΕΠΙΛΟΓΗ "Όνομα: " + Όνομα AS Στήλη 1 FROM Αντισυμβαλλόμενοι ΩΣ Αντισυμβαλλόμενοι ΠΟΥ = &Σύνδεσμος

Συνάρτηση υποσυμβολοσειράς

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

Ένα ανάλογο της συνάρτησης Environment() από το μοντέλο αντικειμένου. Η συνάρτηση Substring() μπορεί να εφαρμοστεί σε δεδομένα συμβολοσειράς και σας επιτρέπει να επιλέξετε ένα τμήμα <Строки> , ξεκινώντας από τον αριθμό χαρακτήρα <НачальнаяПозиция> (οι χαρακτήρες σε μια γραμμή αριθμούνται ξεκινώντας από το 1) και το μήκος <Длина> χαρακτήρες. Το αποτέλεσμα του υπολογισμού της συνάρτησης έχει τύπο συμβολοσειράς μεταβλητού μήκους και το μήκος θα θεωρείται απεριόριστο εάν <Строка> έχει απεριόριστο μήκος και παράμετρο <Длина> δεν είναι σταθερά ή μεγαλύτερη από 1024.

Εάν το μήκος της συμβολοσειράς είναι μικρότερο από αυτό που καθορίζεται στη δεύτερη παράμετρο, τότε η συνάρτηση θα επιστρέψει μια κενή συμβολοσειρά.

Προσοχή!Η χρήση της συνάρτησης SUBSTRING() για τη μετατροπή συμβολοσειρών απεριόριστου μήκους σε συμβολοσειρές περιορισμένου μήκους δεν συνιστάται. Αντίθετα, είναι καλύτερο να χρησιμοποιήσετε τον τελεστή cast EXPRESS().

Λειτουργία Παρόμοια

Εάν πρέπει να βεβαιωθούμε ότι ένα χαρακτηριστικό string πληροί ορισμένα κριτήρια, το συγκρίνουμε:

ΕΠΙΛΕΞΤΕ Αντισυμβαλλόμενοι Όνομα AS Στήλη 1 FROM Αντισυμβαλλόμενοι ΩΣ Αντισυμβαλλόμενοι.

Τι γίνεται όμως αν χρειάζεστε μια πιο λεπτή σύγκριση; Όχι μόνο ισότητα ή ανισότητα, αλλά ομοιότητα με ένα συγκεκριμένο πρότυπο; Για αυτό ακριβώς δημιουργήθηκε η συνάρτηση SIMILAR.

LIKE — Τελεστής για τον έλεγχο μιας συμβολοσειράς για ομοιότητα με ένα μοτίβο. Αναλογικό του LIKE σε SQL.

Ο τελεστής SIMILAR σάς επιτρέπει να συγκρίνετε την τιμή της έκφρασης που καθορίζεται στα αριστερά της με τη συμβολοσειρά μοτίβου που καθορίζεται στα δεξιά. Η τιμή της έκφρασης πρέπει να είναι τύπου string. Εάν η τιμή της παράστασης ταιριάζει με το μοτίβο, το αποτέλεσμα του τελεστή θα είναι TRUE, διαφορετικά θα είναι FALSE.

Οι ακόλουθοι χαρακτήρες στη συμβολοσειρά του προτύπου είναι χαρακτήρες υπηρεσίας και έχουν διαφορετικό νόημα από τον χαρακτήρα συμβολοσειράς:

  • % (ποσοστό): μια ακολουθία που περιέχει οποιονδήποτε αριθμό αυθαίρετων χαρακτήρων.
  • _ (υπογράμμιση): ένας αυθαίρετος χαρακτήρας.
  • […] (V αγκύλεςένας ή περισσότεροι χαρακτήρες): οποιοσδήποτε ενιαίο χαρακτήρααπό αυτά που αναφέρονται σε αγκύλες. Η απαρίθμηση μπορεί να περιέχει εύρη, για παράδειγμα a-z, που σημαίνει έναν αυθαίρετο χαρακτήρα που περιλαμβάνεται στο εύρος, συμπεριλαμβανομένων των άκρων του εύρους.
  • [^...] (σε αγκύλες ένα σύμβολο άρνησης ακολουθούμενο από έναν ή περισσότερους χαρακτήρες): οποιοσδήποτε μεμονωμένος χαρακτήρας εκτός από αυτούς που παρατίθενται μετά το σύμβολο άρνησης.

Οποιοδήποτε άλλο σύμβολο σημαίνει τον εαυτό του και δεν φέρει κανένα πρόσθετο φορτίο. Εάν ένας από τους χαρακτήρες που αναφέρονται πρέπει να γραφτεί ως ο ίδιος, τότε πρέπει να προηγείται<Спецсимвол>. Εγώ ο ίδιος<Спецсимвол>(οποιοσδήποτε κατάλληλος χαρακτήρας) ορίζεται στην ίδια πρόταση μετά τη λέξη-κλειδί ΕΙΔΙΚΟΣ ΧΑΡΑΚΤΗΡΑΣ.

Υλοποιήθηκε στην έκδοση 8.3.6.1977.

Έχουμε επεκτείνει το σύνολο των συναρτήσεων που έχουν σχεδιαστεί για να λειτουργούν με χορδές. Το κάναμε αυτό για να σας προσφέρουμε πιο προηγμένα εργαλεία για την ανάλυση δεδομένων συμβολοσειράς. Οι νέες λειτουργίες θα είναι βολικές και χρήσιμες σε τεχνολογικές εργασίες ανάλυσης κειμένου. Σε εργασίες που σχετίζονται με την ανάλυση κειμένου που περιέχει δεδομένα σε μορφοποιημένη μορφή. Αυτό θα μπορούσε να είναι μια ανάλυση ορισμένων αρχείων που λαμβάνονται από τον εξοπλισμό ή, για παράδειγμα, μια ανάλυση ενός τεχνολογικού αρχείου καταγραφής.

Θα μπορούσατε να εκτελέσετε όλες τις ενέργειες που εκτελούν νέες λειτουργίες πριν. Χρησιμοποιώντας περισσότερο ή λιγότερο πολύπλοκους αλγόριθμους γραμμένους σε μια ενσωματωμένη γλώσσα. Επομένως, οι νέες λειτουργίες δεν σας δίνουν ουσιαστικά νέες δυνατότητες. Ωστόσο, σας επιτρέπουν να μειώσετε την ποσότητα του κώδικα και να κάνετε τον κώδικα απλούστερο και πιο κατανοητό. Επιπλέον, σας επιτρέπουν να επιταχύνετε την εκτέλεση των ενεργειών. Επειδή οι λειτουργίες που υλοποιούνται στην πλατφόρμα λειτουργούν, φυσικά, πιο γρήγορα από έναν παρόμοιο αλγόριθμο γραμμένο σε μια ενσωματωμένη γλώσσα.

Συνάρτηση μορφοποίησης StrTemplate()

Αυτή η συνάρτηση αντικαθιστά τις παραμέτρους σε μια συμβολοσειρά. Η ανάγκη για μια τέτοια μετατροπή προκύπτει συχνά, για παράδειγμα, κατά την εμφάνιση προειδοποιητικών μηνυμάτων. Η σύνταξη αυτής της συνάρτησης είναι η εξής:

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

<Шаблон>- αυτή είναι η συμβολοσειρά στην οποία πρέπει να αντικαταστήσετε τις παραμέτρους.

<Значение1> , ... <Значение10>- αυτές είναι παράμετροι (το πολύ δέκα), οι αναπαραστάσεις των οποίων πρέπει να αντικατασταθούν στη συμβολοσειρά.

Για να υποδείξετε μια συγκεκριμένη θέση στο πρότυπο όπου θέλετε να πραγματοποιήσετε την αντικατάσταση, πρέπει να χρησιμοποιήσετε δείκτες όπως %1, ... %10. Ο αριθμός των δεικτών που εμπλέκονται στο πρότυπο και ο αριθμός των παραμέτρων που περιέχουν τιμές πρέπει να ταιριάζει.

Για παράδειγμα, το αποτέλεσμα της εκτέλεσης ενός τέτοιου τελεστή:

θα υπάρχει μια γραμμή:

Σφάλμα δεδομένων στη γραμμή 2 (απαιτείται τύπος ημερομηνίας)

Λειτουργία για εργασία με συμβολοσειρές StrCompare()

Αυτή η συνάρτηση συγκρίνει δύο συμβολοσειρές με τρόπο χωρίς διάκριση πεζών-κεφαλαίων. Για παράδειγμα, όπως αυτό:

Θα μπορούσατε να εκτελέσετε την ίδια ενέργεια νωρίτερα χρησιμοποιώντας το αντικείμενο σύγκρισης τιμών:

Ωστόσο, η χρήση της νέας δυνατότητας φαίνεται πιο εύκολη. Και εκτός από αυτό, η συνάρτηση, σε αντίθεση με το αντικείμενο Σύγκρισης τιμών, λειτουργεί τόσο στον thin client όσο και στον web-πελάτη.

Λειτουργίες για εργασία με συμβολοσειρές StrStartsWith(), StrEndsAt()

Αυτές οι συναρτήσεις καθορίζουν εάν μια συμβολοσειρά αρχίζει με μια καθορισμένη υποσυμβολοσειρά ή εάν μια συμβολοσειρά τελειώνει με μια καθορισμένη υποσυμβολοσειρά. Ο αλγόριθμος για αυτές τις συναρτήσεις δεν είναι δύσκολο να εφαρμοστεί σε μια ενσωματωμένη γλώσσα, αλλά η παρουσία τους σας επιτρέπει να γράψετε καθαρότερο και πιο κατανοητό κώδικα. Και λειτουργούν πιο γρήγορα.

Για παράδειγμα, είναι βολικό να χρησιμοποιηθούν στη δήλωση If:

Λειτουργίες για εργασία με συμβολοσειρές StrDivide(), StrConnect()

Αυτές οι συναρτήσεις χωρίζουν μια συμβολοσειρά σε μέρη χρησιμοποιώντας έναν καθορισμένο οριοθέτη. Ή αντίστροφα, συνδυάζουν πολλές γραμμές σε μία, εισάγοντας το επιλεγμένο διαχωριστικό μεταξύ τους. Είναι βολικά για τη δημιουργία ή την ανάλυση αρχείων καταγραφής και τεχνολογικών περιοδικών. Για παράδειγμα, μπορείτε εύκολα να αναλύσετε μια καταχώρηση τεχνολογικού αρχείου καταγραφής σε μέρη κατάλληλα για περαιτέρω ανάλυση:

Συνάρτηση για εργασία με συμβολοσειρές StrFind()

Αντί για την παλιά συνάρτηση Find(), υλοποιήσαμε νέο χαρακτηριστικό, το οποίο διαθέτει επιπλέον χαρακτηριστικά:

  • Αναζήτηση σε διαφορετικές κατευθύνσεις (από την αρχή, από το τέλος).
  • Αναζήτηση από μια καθορισμένη θέση.
  • Αναζήτηση για ένα περιστατικό με έναν καθορισμένο αριθμό (δεύτερο, τρίτο, κ.λπ.).

Στην πραγματικότητα, αντιγράφει τις δυνατότητες της παλιάς λειτουργίας. Αυτό γίνεται για να διατηρηθεί η συμβατότητα με ενότητες που έχουν μεταγλωττιστεί σε παλαιότερες εκδόσεις. Συνιστάται να μην χρησιμοποιείτε πλέον την παλιά συνάρτηση Find().

Ακολουθεί ένα παράδειγμα χρήσης των νέων δυνατοτήτων αναζήτησης. Η αντίστροφη αναζήτηση είναι χρήσιμη όταν χρειάζεστε το τελευταίο μέρος μιας τυπικής συμβολοσειράς, όπως το πλήρες όνομα αρχείου σε μια διεύθυνση URL. Και η αναζήτηση από μια καθορισμένη θέση βοηθά σε περιπτώσεις όπου πρέπει να κάνετε αναζήτηση σε ένα γνωστό τμήμα και όχι σε ολόκληρη τη γραμμή.

Οι σειρές στο 1C 8.3 στην ενσωματωμένη γλώσσα 1C είναι τιμές πρωτόγονου τύπου Γραμμή. Αξίες αυτού του τύπουπεριέχουν μια συμβολοσειρά Unicode αυθαίρετου μήκους. Οι μεταβλητές τύπου συμβολοσειράς είναι ένα σύνολο χαρακτήρων που περικλείονται σε εισαγωγικά.

Παράδειγμα 1. Ας δημιουργήσουμε μια μεταβλητή συμβολοσειράς με κείμενο.

StringVariable = "Γεια σου κόσμο!";

Λειτουργίες για εργασία με χορδές σε 1s 8.3

ΣΕ αυτός ο τομέαςΘα δοθούν οι κύριες λειτουργίες που σας επιτρέπουν να αλλάξετε γραμμές στο 1c ή να αναλύσετε τις πληροφορίες που περιέχονται σε αυτές.

StrLength

StrLength(<Строка>) . Επιστρέφει τον αριθμό των χαρακτήρων που περιέχονται στη συμβολοσειρά που μεταβιβάστηκε ως παράμετρος.

Παράδειγμα 2. Ας μετρήσουμε τον αριθμό των χαρακτήρων στη γραμμή "Hello world!"

String = "Γεια σου κόσμο!"; NumberofCharacters = StrLength(String); Αναφορά(ΑριθμοίΧαρακτήρες);

Το αποτέλεσμα της εκτέλεσης αυτού του κωδικού θα είναι η εμφάνιση του αριθμού των χαρακτήρων στη γραμμή: 11.

AbbrL

AbbrL(<Строка>) . Περικόπτει μη σημαντικούς χαρακτήρες στα αριστερά του πρώτου σημαντικού χαρακτήρα στη συμβολοσειρά.
Μικροί χαρακτήρες:

  • χώρος;
  • μη σπάζοντας χώρο?
  • κατάταξη εις πίνακα;
  • Επιστροφή μεταφοράς?
  • γραμμή μετάφραση?
  • μετάφραση του εντύπου (σελίδα).

Παράδειγμα 3. Αφαιρέστε όλα τα κενά από την αριστερή πλευρά της γραμμής "world!" και προσθέστε τη γραμμή "Hello" σε αυτό.

String = Συντομογραφία ("world!"); String = "Hello"+String; Αναφορά(String);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση της γραμμής "Hello world!"

Συντομογραφία

Abbr(<Строка>) . Περικόπτει μη σημαντικούς χαρακτήρες στα δεξιά του πρώτου σημαντικού χαρακτήρα στη συμβολοσειρά.

Παράδειγμα 4. Σχηματίστε από τις γραμμές "Hello" και "peace!" η φράση "Γεια σου κόσμο!"

Line = Συντομογραφία ("Hello ")+" "+ Abbreviation(" world!"); Αναφορά(String);

AbbrLP

AbbrLP(<Строка>) . Περικόπτει μη σημαντικούς χαρακτήρες στα δεξιά του πρώτου σημαντικού χαρακτήρα της συμβολοσειράς και επίσης περικόπτει μη σημαντικούς χαρακτήρες στα αριστερά του πρώτου σημαντικού χαρακτήρα στη συμβολοσειρά. Αυτή η λειτουργία χρησιμοποιείται πιο συχνά από τις δύο προηγούμενες, καθώς είναι πιο καθολική.

Παράδειγμα 5. Αφαιρέστε ασήμαντους χαρακτήρες στα αριστερά και δεξιά στο όνομα του αντισυμβαλλομένου.

Counterparty = Κατάλογοι Counterparties.Find By Details("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

ένα λιοντάρι

Ενα λιοντάρι(<Строка>, <ЧислоСимволов>) . Λαμβάνει τους πρώτους χαρακτήρες της συμβολοσειράς, ο αριθμός των χαρακτήρων καθορίζεται στην παράμετρο Αριθμός χαρακτήρων.

Παράδειγμα 6. Αφήστε τη δομή Υπάλληλοςπεριέχει το όνομα, το επίθετο και το πατρώνυμο του υπαλλήλου. Πάρτε μια συμβολοσειρά με επώνυμο και αρχικά.

NameInitial = Lev(Employee.Name, 1); Πατρωνυμικό Αρχικό = Λέων(Εργαζόμενος. Πατρώνυμο, 1); FullName = Employee.LastName + " " + FirstName Initial + "." + Μέσο αρχικό + ".";

σωστά

Σωστά(<Строка>, <ЧислоСимволов>) . Λαμβάνει τους τελευταίους χαρακτήρες μιας συμβολοσειράς, τον αριθμό των χαρακτήρων που καθορίζεται στην παράμετρο Αριθμός χαρακτήρων.Εάν ο καθορισμένος αριθμός χαρακτήρων υπερβαίνει το μήκος της συμβολοσειράς, τότε επιστρέφεται ολόκληρη η συμβολοσειρά.

Παράδειγμα 7. Αφήστε μια ημερομηνία σε μορφή «εεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεε. ημερομηνία.

String = "Τρέχουσα ημερομηνία: 20170910"; StringDate = Δικαιώματα (String, 8); Date = Date(StringDate);

Τετάρτη

Τετάρτη(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Λαμβάνει μια δευτερεύουσα συμβολοσειρά από τη συμβολοσειρά που μεταβιβάζεται ως παράμετρος Γραμμή, ξεκινώντας από τον χαρακτήρα του οποίου ο αριθμός καθορίζεται στην παράμετρο Αρχικός Αριθμόςκαι το μήκος πέρασε στην παράμετρο Αριθμός χαρακτήρων.Η αρίθμηση των χαρακτήρων σε μια γραμμή ξεκινά από το 1. Αν στην παράμετρο Αρχικός Αριθμόςκαθορίζεται μια τιμή μικρότερη ή ίση με το μηδέν, τότε η παράμετρος παίρνει την τιμή 1. Εάν η παράμετρος Αριθμός χαρακτήρωνδεν καθορίζεται, τότε επιλέγονται χαρακτήρες μέχρι το τέλος της γραμμής.

Παράδειγμα 8. Αφήστε τη μεταβλητή συμβολοσειράς που ξεκινά από την ένατη θέση να περιέχει τον κωδικό περιοχής, θα πρέπει να τον πάρετε και να τον γράψετε σε ξεχωριστή γραμμή.

String = "Περιοχή: 99 Μόσχα"; Περιοχή = Μέσος (String, 9, 2);

Εύρεση σελίδας

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Αναζητά μια καθορισμένη υποσυμβολοσειρά σε μια συμβολοσειρά, επιστρέφοντας τον αριθμό θέσης του πρώτου χαρακτήρα της υποσυμβολοσειράς που βρέθηκε. Ας δούμε τις παραμέτρους αυτής της συνάρτησης:

  • Γραμμή. Συμβολοσειρά πηγής;
  • Υποσυμβολοσειρά αναζήτησης. Υποσυμβολοσειρά αναζήτησης.
  • Κατεύθυνση αναζήτησης. Καθορίζει την κατεύθυνση αναζήτησης μιας υποσυμβολοσειράς σε μια συμβολοσειρά. Μπορεί να λάβει τιμές:
    • Αναζήτηση Κατεύθυνσης.Από την αρχή;
    • Αναζήτηση.Τέλος κατεύθυνσης;
  • Αρχική θέση. Καθορίζει τη θέση στη συμβολοσειρά από την οποία ξεκινά η αναζήτηση.
  • NumberOccurrences. Καθορίζει τον αριθμό εμφάνισης της υποσυμβολοσειράς που αναζητήθηκε στη συμβολοσειρά προέλευσης.

Παράδειγμα 9. Στη γραμμή "Hello world!" Προσδιορίστε τη θέση της τελευταίας εμφάνισης του χαρακτήρα "και".

PositionNumber = StrFind("Hello world!", "and", SearchDirection.End); Αναφορά(Αριθμός Θέσης);

Το αποτέλεσμα της εκτέλεσης αυτού του κωδικού θα είναι να εμφανιστεί ο αριθμός της τελευταίας εμφάνισης του συμβόλου "και": 9.

VReg

VReg(<Строка>) . Μετατρέπει όλους τους χαρακτήρες της καθορισμένης συμβολοσειράς στο 1s8 σε κεφαλαία.

Παράδειγμα 10: Μετατρέψτε τη συμβολοσειρά "hello world!" στο κεφαλαίο.

StringVreg = VReg("γεια σου κόσμε!"); Αναφορά(StringVreg);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση της γραμμής "HELLO WORLD!"

NReg

NReg(<Строка>) . Μετατρέπει όλους τους χαρακτήρες της καθορισμένης συμβολοσειράς σε 1s 8 σε πεζά.

Παράδειγμα 11: Μετατρέψτε τη συμβολοσειρά "HELLO WORLD!" σε πεζό.

StringNreg = NReg("HELLO WORLD!"); Αναφορά(StringVreg);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση της γραμμής "γεια στον κόσμο!"

Treg

Treg(<Строка>) . Μετατρέπει μια συμβολοσειρά ως εξής: ο πρώτος χαρακτήρας κάθε λέξης μετατρέπεται σε κεφαλαία, οι υπόλοιποι χαρακτήρες της λέξης μετατρέπονται σε πεζά.

Παράδειγμα 12: Γράψτε κεφαλαία τα πρώτα γράμματα των λέξεων στη γραμμή "γεια σας κόσμο!"

StringTreg = TReg("γεια σου κόσμε!"); Αναφορά(StringTreg);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση της γραμμής "Hello World!"

Σύμβολο

Σύμβολο(<КодСимвола>) . Παίρνει έναν χαρακτήρα από τον κωδικό Unicod του.

Παράδειγμα 13. Προσθέστε αριστερά και δεξιά στη γραμμή "Hello World!" σύμβολο ★

StringWithStars = Symbol("9733")+"Hello World!"+Symbol("9733"); Αναφορά(StringWithStars);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση της γραμμής "★Hello World!★"

Κωδικός συμβόλου

SymbolCode(<Строка>, <НомерСимвола>) . Λαμβάνει τον κωδικό χαρακτήρων Unicode από τη συμβολοσειρά που καθορίζεται στην πρώτη παράμετρο, που βρίσκεται στη θέση που καθορίζεται στη δεύτερη παράμετρο.

Παράδειγμα 14. Μάθετε τον κωδικό του τελευταίου χαρακτήρα στη γραμμή "Hello World!"

String = "Hello World!"; CharacterCode = CharacterCode(String, StrLength(String)); Ειδοποίηση (CharacterCode);

Το αποτέλεσμα της εκτέλεσης αυτού του κωδικού θα είναι η εμφάνιση του κωδικού συμβόλου "!" - 33.

Κενή γραμμή

Κενή γραμμή(<Строка>) . Ελέγχει εάν η συμβολοσειρά αποτελείται μόνο από ασήμαντους χαρακτήρες, δηλαδή εάν είναι κενή.

Παράδειγμα 15. Ελέγξτε εάν μια συμβολοσειρά που αποτελείται από τρία κενά είναι κενή.

Empty = EmptyString(" "); Αναφορά (Κενό);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση της λέξης "Ναι" (μια έκφραση συμβολοσειράς μιας λογικής τιμής Αληθής).

Αντικατάσταση σελίδας

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Βρίσκει όλες τις εμφανίσεις της υποσυμβολοσειράς αναζήτησης στη συμβολοσειρά πηγής και την αντικαθιστά με την υποσυμβολοσειρά αντικατάστασης.

Παράδειγμα 16. Στη γραμμή "Hello World!" αντικαταστήστε τη λέξη «Ειρήνη» με τη λέξη «Φίλοι».

String = StrReplace("Hello World!", "World", "Friends"); Αναφορά(String);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση της γραμμής "Hello Friends!"

StrNumberLines

StrNumberRow(<Строка>) . Σας επιτρέπει να μετράτε τον αριθμό των γραμμών σε μια συμβολοσειρά πολλών γραμμών. Να παω σε νέα γραμμήστο 1s 8 χρησιμοποιείται το σύμβολο ΥΣΤΕΡΟΓΡΑΦΟ(χαρακτήρας νέας γραμμής).

Παράδειγμα 17. Προσδιορίστε τον αριθμό των γραμμών στο κείμενο:
"Πρώτη γραμμή
Δεύτερη γραμμή
Τρίτη γραμμή"

Number = StrNumberString("Πρώτη γραμμή"+Χαρακτήρες.PS +"Δεύτερη γραμμή"+Symbols.PS +"Τρίτη γραμμή"); Αναφορά(Αριθμός);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση του αριθμού των γραμμών στο κείμενο: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Λαμβάνει μια γραμμή σε μια συμβολοσειρά πολλών γραμμών με τον αριθμό της. Η αρίθμηση γραμμών ξεκινά από το 1.

Παράδειγμα 18. Πάρτε την τελευταία γραμμή του κειμένου:
"Πρώτη γραμμή
Δεύτερη γραμμή
Τρίτη γραμμή"

Κείμενο = "Πρώτη γραμμή" + Σύμβολα PS + "Δεύτερη γραμμή" + "Τρίτη γραμμή". LastRow = StrGetRow(Text, StrNumberLines(Text)); Αναφορά (Τελευταία Γραμμή);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση της γραμμής "Τρίτη Γραμμή".

ΣελίδαΑριθμόςΕκδηλώσεις

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Επιστρέφει τον αριθμό των εμφανίσεων της καθορισμένης υποσυμβολοσειράς σε μια συμβολοσειρά. Η λειτουργία είναι διάκριση πεζών-κεφαλαίων.

Παράδειγμα 19. Προσδιορίστε πόσες φορές εμφανίζεται το γράμμα «c» στη γραμμή «Γραμμές στα 1s 8.3 και 8.2», ανεξάρτητα από τη πεζή του.

Γραμμή = "Γραμμές σε 1s 8.3 και 8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "With"); Αναφορά(ΑριθμοίΕκδηλώσεις);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση του αριθμού των εμφανίσεων: 2.

PageStartsWith

StrStartsWith(<Строка>, <СтрокаПоиска>) . Ελέγχει εάν η συμβολοσειρά που πέρασε στην πρώτη παράμετρο ξεκινά με τη συμβολοσειρά στη δεύτερη παράμετρο.

Παράδειγμα 20. Προσδιορίστε εάν ο ΑΦΜ του επιλεγμένου αντισυμβαλλομένου αρχίζει με τον αριθμό 1. Αφήστε τη μεταβλητή αντισυμβαλλόμενος αντισυμβαλλόμενοι.

ΑΦΜ = Αντισυμβαλλόμενος.ΑΦΜ; StartsUNits = StrStartsWith(TIN, "1"); Εάν ξεκινά με μονάδες Τότε //Ο κωδικός σας EndIf;

PageEndsOn

StrendsWith(<Строка>, <СтрокаПоиска>) . Ελέγχει εάν η συμβολοσειρά που πέρασε στην πρώτη παράμετρο τελειώνει με τη συμβολοσειρά στη δεύτερη παράμετρο.

Παράδειγμα 21. Προσδιορίστε εάν ο ΑΦΜ του επιλεγμένου αντισυμβαλλομένου τελειώνει με τον αριθμό 2. Αφήστε τη μεταβλητή αντισυμβαλλόμενοςαποθηκεύεται μια αναφορά σε ένα στοιχείο καταλόγου αντισυμβαλλόμενοι.

ΑΦΜ = Αντισυμβαλλόμενος.ΑΦΜ; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Τότε //Ο κωδικός σας EndIf;

Διαχωρισμός σελίδας

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Διαχωρίζει μια συμβολοσειρά σε μέρη χρησιμοποιώντας τους καθορισμένους χαρακτήρες οριοθέτησης και γράφει τις συμβολοσειρές που προκύπτουν σε έναν πίνακα. Η πρώτη παράμετρος αποθηκεύει τη συμβολοσειρά πηγής, η δεύτερη περιέχει τη συμβολοσειρά που περιέχει το διαχωριστικό, η τρίτη υποδεικνύει εάν οι κενές συμβολοσειρές πρέπει να γραφτούν στον πίνακα (από προεπιλογή Αληθής).

Παράδειγμα 22. Ας έχουμε μια συμβολοσειρά που περιέχει αριθμούς που χωρίζονται με το σύμβολο «;», πάρτε έναν πίνακα αριθμών από τη συμβολοσειρά.

Συμβολοσειρά = "1; 2; 3"; Array = StrDivide(String, ";"); Για Count = 0 By Array.Quantity() - 1 Cycle Attempt Array[Count] = Number(AbbrLP(Array[Count])); Εξαίρεση Πίνακας [Sch] = 0; EndAttemptsEndCycle;

Ως αποτέλεσμα της εκτέλεσης, θα ληφθεί ένας πίνακας με αριθμούς από το 1 έως το 3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Μετατρέπει τον πίνακα συμβολοσειρών από την πρώτη παράμετρο σε μια συμβολοσειρά που περιέχει όλα τα στοιχεία του πίνακα που χωρίζονται από τον οριοθέτη που καθορίζεται στη δεύτερη παράμετρο.

Παράδειγμα 23. Χρησιμοποιώντας τον πίνακα αριθμών από το προηγούμενο παράδειγμα, λάβετε την αρχική συμβολοσειρά.

Για λογαριασμό = 0 Κατά Array.Quantity() - 1 Πίνακας Κύκλου[Act] = String(Array[Act]); EndCycle; Row = StrConnect(Array, "; ");

mob_info