Fungsi baharu untuk bekerja dengan rentetan. Fungsi baharu untuk bekerja dengan rentetan Susunan rentetan dalam pengaturcaraan 1s

Keupayaan asas bahasa pengaturcaraan biasanya termasuk bekerja dengan nombor dan rentetan. Biasanya, keupayaan ini dikodkan keras ke dalam kod pengkompil (atau kelas "asas" bahasa pengaturcaraan dilaksanakan).

Dalam 1C, keupayaan untuk bekerja dengan rentetan diprogramkan dalam platform itu sendiri. Hari ini kita akan melihat ciri-ciri bekerja dengan rentetan 1C dalam program dalam bahasa 1C terbina dalam.

Nilai baris 1C

1. Mari kita mulakan dengan yang paling mudah. Mencipta pembolehubah dan memberikan nilai rentetan malar kepadanya kelihatan seperti ini dalam 1C:

Pembolehubah = "Hello, dunia!";

Jika anda perlu menentukan aksara petikan dalam nilai rentetan 1C malar, maka anda perlu menggandakannya ""

Pembolehubah = "Hello, dunia"!;

2. Line break 1C boleh ditentukan dalam dua cara sekaligus. Yang pertama menggunakan simbol |

Pembolehubah = "Helo,
| dunia! ";

Yang kedua ialah menggunakan penghitungan sistem Simbol. Ia membolehkan anda menambah kedua-dua pemisah baris 1C dan aksara bukan pencetakan lain, seperti TAB.

Pembolehubah = "Hello" + Symbols.PS + "peace!";

3. Konfigurasi dalam 1C boleh dibangunkan bukan sahaja untuk satu bahasa (Rusia, Inggeris atau yang lain) - tetapi serentak untuk beberapa bahasa. Dalam kes ini, bahasa yang digunakan pada masa ini dipilih di bahagian bawah tetingkap 1C.

Senarai bahasa terletak dalam tetingkap konfigurasi di cawangan Umum/Bahasa. Setiap bahasa mempunyai pengecam pendek seperti ru atau eng.

Adalah jelas bahawa apabila memprogramkan konfigurasi sedemikian, baris 1C juga boleh berbilang bahasa. Untuk melakukan ini, adalah mungkin untuk mencipta garis 1C sedemikian dengan menentukan melalui; pilihan mengikut pengecam bahasa:

Pembolehubah = "ru=""Hello, dunia! ""; en=""Hello, dunia! """;

Jika anda menggunakan garisan 1C yang dibentuk dengan cara ini seperti biasa, maka ia akan menjadi apa yang tertulis di dalamnya. Untuk membolehkan sistem membahagikannya kepada dua pilihan dan menggunakan pilihan yang dikehendaki, anda perlu menggunakan fungsi НStr():

//betul untuk konfigurasi dwibahasa
Laporan(NStr(Pembolehubah));

Alat peraga dengan jenis baris 1C

Atribut ialah medan dalam direktori/dokumen 1C. Ia berbeza daripada pembolehubah dalam program dalam bahasa 1C kerana untuk atribut jenisnya ditunjukkan dengan tepat (nombor, rentetan 1C, dll.). Jika anda perlu menyegarkan ingatan anda tentang apa itu prop, tonton pelajarannya.

Jika anda menentukan jenis atribut - baris 1C, maka anda perlu menentukan parameter tambahan.

Garis 1C datang dalam panjang tanpa had (ditunjukkan sebagai panjang = 0) dan panjang terhad, menunjukkan bilangan aksara yang tepat. Baris 1C dengan panjang tanpa had disimpan dalam jadual SQL yang berasingan, jadi penggunaannya kurang produktif berbanding yang terhad.

Itulah sebabnya penggunaan rentetan 1C dengan panjang tanpa had mempunyai hadnya - tidak mungkin untuk menggunakannya di mana-mana. Contohnya, ia tidak dibenarkan sebagai nombor dokumen, kod rujukan atau ukuran.

Bekerja dengan rentetan 1C

Terdapat beberapa fungsi terbina dalam platform 1C untuk bekerja dengan rentetan.

  • AbbrLP (“Luar biasa, tetapi benar!”)
    Mengalih keluar ruang tambahan daripada baris 1C. Juga boleh digunakan untuk menukar sebarang jenis kepada rentetan 1C (contohnya, nombor).
  • Pembolehubah = "Vasya" + AbbrLP(" tambah") + "Olya"; //akan ada "Vasya plus Olya"
    Contoh menjumlahkan beberapa nilai rentetan 1C. Hasilnya ialah satu baris 1C.
  • Pembolehubah = Lev("Muzik", 2); //akan menjadi "Mu"
    Variable = Sederhana("Muzik", 2, 2); //akan ada "ancaman"
    Variable = Rights("Muzik", 2); //akan ada "ka"
    Pelbagai pilihan untuk mendapatkan subrentetan daripada rentetan 1C.
  • Variable = Cari("Muzik", "zy"); //akan ada 3
    Cari subrentetan dalam rentetan 1C, bermula dari aksara 1.
  • Variable = StrLength("Muzik"); //akan menjadi 6
    Mengembalikan bilangan aksara dalam baris 1C.
  • Report("Hello") //dalam tetingkap mesej di bahagian bawah tetingkap 1C
    Makluman("Hello") //dialog timbul
    Status("Hello") //dalam baris paparan status di sebelah kiri bawah
    .

Membawa objek ke baris 1C

Seperti yang anda ketahui, format yang paling popular untuk bertukar-tukar maklumat berstruktur pada masa ini ialah XML. Malah versi terkini MS Office Word dan Excel menyimpan fail dalam format ini (docx dan xlsx, masing-masing, menukar sambungan kepada zip, buka dalam arkib).

Platform 1C untuk pertukaran data menyediakan beberapa pilihan, yang utamanya juga XML.

1. Kaedah paling mudah ialah menggunakan fungsi Singkatan() atau String(). Anda boleh menggunakan fungsi REPRESENTATION() dalam badan permintaan. Hasil tindakan mereka adalah sama - mereka menjana perwakilan rentetan mana-mana objek 1C untuk pengguna.

Untuk direktori, secara lalai ini akan menjadi namanya. Untuk dokumen – nama dokumen, nombor dan tarikh.

2. Mana-mana objek 1C (dengan sekatan) boleh ditukar kepada XML dan sebaliknya. Proses penukaran dipanggil serialisasi.

StringViewXml = XMLString(Nilai); //dapatkan XML daripada nilai 1C
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //dapatkan nilai 1C daripada rentetan XML, anda mesti menentukan jenis 1C yang sepatutnya diterima

3. Terdapat cara platform 1C sendiri untuk menukar mana-mana objek 1C kepada rentetan. Ia berhijrah daripada versi 1C 7.7. Format ini tidak difahami oleh program lain, tetapi 1C lain memahaminya, yang menjadikannya mudah untuk menggunakannya untuk pertukaran antara pangkalan data 1C.

Baris = ValueInRowInt(Value1C); //dapatkan rentetan 1C daripada nilai 1C
ValueVFile("C:\MyFile.txt", Value1C); //pilihan lain, kami mendapat fail dengan rentetan yang disimpan daripada nilai 1C
Value1C = ValueFromStringInt(String); //kembali dari baris 1C
Value1C = ValueFile("C:\MyFile.txt"); //kembali dari fail

Mengedit baris 1C pada borang

Selain bekerja dengan rentetan 1C dalam program dalam bahasa 1C, sudah tentu saya ingin pengguna dapat mengeditnya. Terdapat beberapa kemungkinan untuk ini:

1. Cara paling mudah ialah meminta kemasukan talian 1C atas permintaan. Kaedah ini digunakan semasa mengajar pengaturcaraan 1C dalam kehidupan ia digunakan lebih jarang (tetapi ia digunakan!).

Pembolehubah = "";
Baris = EnterValue(Pembolehubah, "Masukkan Nama Penuh");

2. Untuk memaparkan butiran objek 1C (direktori/dokumen) atau butiran borang (lihat), medan input paling kerap digunakan. Ini ialah alat yang paling biasa dalam 1C untuk pengguna bekerja dengan medan pengeditan.

3. Keupayaan medan input boleh dikembangkan (lihat sifat medan input, klik kanan padanya, butiran lanjut):

  • Kotak semak Mod pengeditan berbilang baris
  • Kotak semak pengeditan lanjutan (tersedia jika kotak pilihan sebelumnya ditandakan)
  • Kotak semak mod Kata laluan (lihat).

4. Jika semua keupayaan medan input tidak mencukupi untuk anda, terdapat editor terbina dalam. Untuk menambahkannya pada borang, anda perlu menambah Medan Dokumen Teks pada menu Kawalan Borang/Sisip. Dalam sifatnya anda boleh menentukan mod pengendaliannya - sifat Sambungan.

Medan dokumen teks tidak boleh dikaitkan secara langsung dengan data. Ia adalah perlu untuk menulis fungsi dalam OnOpen() pengendali acara borang (lihat):

Form Elements.ElementNameTextDocumentField.SetText(ValueString); //di sini ValueString ialah teks yang diterima, sebagai contoh, daripada atribut

Dan dalam pengendali simpan - sebagai contoh, dalam butang Simpan - tambahkan simpan:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //NilaiBaris di sini ialah atribut tempat kita menyimpan nilai

5. Dalam versi 1C 8.2.11, dalam bentuk terurus, pilihan baharu telah muncul untuk mewakili baris 1C - medan Dokumen Terformat.


Sama seperti medan dokumen teks, anda mesti menetapkannya semasa membukanya dan menulisnya apabila menyimpannya sendiri menggunakan program.

  • Dalam objek 1C yang bentuknya kita buat (direktori, dokumen, pemprosesan, dll.) - tambahkan atribut dengan jenis Storan Nilai
  • Dalam fungsi OnReadOnServer() kami menetapkan teks daripada atribut

    //di sini Atribut ialah atribut tambahan bagi objek 1C
    //di sini FormattedDocument ialah nama medan pada borang untuk diedit
    &OnServer

    FormattedDocument = CurrentObject.Attributes.Get();
    Tamat Prosedur

  • Dalam fungsi BeforeWritingOnServer() atau menggunakan butang, kami akan menulis teks dari medan

    &OnServer
    Prosedur Apabila ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Tamat Prosedur

Terdapat beberapa mekanisme untuk bekerja dengan rentetan dalam pertanyaan 1C. Pertama, baris boleh ditambah. Kedua, anda boleh mengambil subrentetan daripada rentetan. Ketiga, rentetan boleh dibandingkan, termasuk mengikut corak. Itu mungkin semua yang boleh dilakukan dengan rentetan.

Penambahan rentetan

Untuk menambah baris dalam pertanyaan, operasi "+" digunakan. Anda hanya boleh menambah rentetan panjang terhad.

PILIH "Nama: " + Nama Pihak Rakan SEBAGAI Lajur 1 DARI Direktori Pihak Rakan Sejawat WHERE Pautan = &Pautan

Fungsi subrentetan

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

Analog fungsi Persekitaran() daripada model objek. Fungsi Substring() boleh digunakan pada data rentetan dan membolehkan anda memilih serpihan <Строки> , bermula dengan nombor aksara <НачальнаяПозиция> (aksara dalam baris dinomborkan bermula dari 1) dan panjang <Длина> watak. Hasil pengiraan fungsi mempunyai jenis rentetan panjang berubah-ubah, dan panjang akan dianggap tidak terhad jika <Строка> mempunyai panjang dan parameter yang tidak terhad <Длина> bukan pemalar atau lebih besar daripada 1024.

Jika panjang rentetan kurang daripada yang ditentukan dalam parameter kedua, maka fungsi akan mengembalikan rentetan kosong.

Perhatian! Menggunakan fungsi SUBSTRING() untuk menukar rentetan panjang tanpa had kepada rentetan panjang terhad adalah tidak disyorkan. Sebaliknya, lebih baik menggunakan operator cast EXPRESS().

Fungsi Serupa

Jika kami perlu memastikan bahawa atribut rentetan memenuhi kriteria tertentu, kami membandingkannya:

PILIH Counterparty Nama AS Lajur 1 DARI Direktori Pihak Rakan Sejawat WHERE Nama Rakan Sejawat = "Gazprom".

Tetapi bagaimana jika anda memerlukan perbandingan yang lebih halus? Bukan sahaja kesamaan atau ketidaksamaan, tetapi persamaan dengan corak tertentu? Inilah fungsi SIMILAR yang dicipta.

LIKE — Operator untuk menyemak rentetan untuk persamaan dengan corak. Analog LIKE dalam SQL.

Operator SIMILAR membolehkan anda membandingkan nilai ungkapan yang ditentukan di sebelah kirinya dengan rentetan corak yang ditentukan di sebelah kanan. Nilai ungkapan mestilah daripada jenis rentetan. Jika nilai ungkapan sepadan dengan corak, hasil pengendali akan menjadi BENAR, jika tidak, ia akan menjadi PALSU.

Aksara berikut dalam rentetan corak ialah aksara perkhidmatan dan mempunyai makna yang berbeza daripada aksara rentetan:

  • % (peratus): urutan yang mengandungi sebarang bilangan aksara arbitrari;
  • _ (garis bawah): satu watak sewenang-wenangnya;
  • […] (satu atau lebih aksara dalam kurungan segi empat sama): mana-mana aksara tunggal yang disenaraikan di dalam kurungan segi empat sama. Penghitungan mungkin mengandungi julat, contohnya a-z, bermaksud aksara arbitrari yang disertakan dalam julat, termasuk hujung julat;
  • [^...] (dalam kurungan persegi tanda penolakan diikuti oleh satu atau lebih aksara): mana-mana aksara tunggal selain daripada yang disenaraikan mengikut tanda penolakan.

Sebarang simbol lain bermaksud dirinya sendiri dan tidak membawa sebarang beban tambahan. Jika salah satu daripada aksara yang disenaraikan perlu ditulis sebagai dirinya sendiri, maka ia mesti didahului dengan<Спецсимвол>. saya sendiri<Спецсимвол>(mana-mana watak yang sesuai) ditakrifkan dalam pernyataan yang sama selepas kata kunci WATAK KHAS.

Dilaksanakan dalam versi 8.3.6.1977.

Kami telah mengembangkan set fungsi yang direka untuk berfungsi dengan rentetan. Kami melakukan ini untuk memberi anda alat yang lebih maju untuk menghuraikan data rentetan. Fungsi baharu akan menjadi mudah dan berguna dalam tugas teknologi analisis teks. Dalam tugas yang berkaitan dengan menghurai teks yang mengandungi data dalam bentuk berformat. Ini boleh menjadi analisis beberapa fail yang diterima daripada peralatan, atau, sebagai contoh, analisis log teknologi.

Anda boleh melakukan semua tindakan yang melaksanakan fungsi baharu sebelum ini. Menggunakan algoritma yang lebih atau kurang kompleks yang ditulis dalam bahasa terbina dalam. Oleh itu, fungsi baharu tidak memberi anda sebarang keupayaan baharu secara asasnya. Walau bagaimanapun, mereka membenarkan anda mengurangkan jumlah kod dan menjadikan kod lebih mudah dan lebih mudah difahami. Di samping itu, mereka membolehkan anda mempercepatkan pelaksanaan tindakan. Kerana fungsi yang dilaksanakan dalam platform berfungsi, sudah tentu, lebih cepat daripada algoritma serupa yang ditulis dalam bahasa terbina dalam.

Fungsi pemformatan StrTemplate()

Fungsi ini menggantikan parameter ke dalam rentetan. Keperluan untuk penukaran sedemikian sering timbul, sebagai contoh, apabila memaparkan mesej amaran. Sintaks untuk fungsi ini adalah seperti berikut:

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

<Шаблон>- ini ialah rentetan yang anda perlukan untuk menggantikan perwakilan parameter.

<Значение1> , ... <Значение10>- ini adalah parameter (maksimum sepuluh), perwakilan yang mesti digantikan ke dalam rentetan.

Untuk menunjukkan tempat tertentu dalam templat di mana anda ingin melakukan penggantian, anda perlu menggunakan penanda seperti % 1, ... % 10. Bilangan penanda yang terlibat dalam templat dan bilangan parameter yang mengandungi nilai mesti sepadan.

Sebagai contoh, hasil daripada melaksanakan pengendali sedemikian:

akan ada baris:

Ralat data pada baris 2 (Jenis tarikh diperlukan)

Fungsi untuk bekerja dengan rentetan StrCompare()

Fungsi ini membandingkan dua rentetan dalam cara yang tidak peka huruf besar-besaran. Sebagai contoh, seperti ini:

Anda boleh melakukan tindakan yang sama sebelum ini menggunakan objek Perbandingan Nilai:

Walau bagaimanapun, menggunakan ciri baharu kelihatan lebih mudah. Selain itu, fungsi ini, tidak seperti objek Perbandingan Nilai, berfungsi dalam kedua-dua klien nipis dan klien web.

Fungsi untuk bekerja dengan rentetan StrStartsWith(), StrEndsAt()

Fungsi ini menentukan sama ada rentetan bermula dengan subrentetan tertentu atau sama ada rentetan berakhir dengan subrentetan tertentu. Algoritma untuk fungsi ini tidak sukar untuk dilaksanakan dalam bahasa terbenam, tetapi kehadirannya membolehkan anda menulis kod yang lebih bersih dan lebih mudah difahami. Dan mereka bekerja lebih cepat.

Sebagai contoh, ia mudah digunakan dalam pernyataan Jika:

Fungsi untuk bekerja dengan rentetan StrDivide(), StrConnect()

Fungsi ini memisahkan rentetan kepada bahagian menggunakan pembatas yang ditentukan. Atau sebaliknya, mereka menggabungkan beberapa baris menjadi satu, memasukkan pemisah yang dipilih di antara mereka. Ia mudah untuk mencipta atau menganalisis log dan jurnal teknologi. Contohnya, anda boleh menghuraikan entri log teknologi dengan mudah kepada bahagian yang sesuai untuk analisis lanjut:

Fungsi untuk bekerja dengan rentetan StrFind()

Daripada fungsi Find() lama, kami telah melaksanakan fungsi baharu yang mempunyai keupayaan tambahan:

  • Cari dalam arah yang berbeza (dari awal, dari akhir);
  • Cari dari kedudukan yang ditentukan;
  • Cari kejadian dengan nombor tertentu (kedua, ketiga, dsb.).

Malah, ia menduplikasi keupayaan fungsi lama. Ini dilakukan untuk mengekalkan keserasian dengan modul yang disusun dalam versi lama. Adalah disyorkan bahawa anda tidak lagi menggunakan fungsi Find() lama.

Di bawah ialah contoh menggunakan keupayaan carian baharu. Carian terbalik berguna apabila anda memerlukan bahagian terakhir rentetan rasmi, seperti nama fail penuh dalam URL. Dan carian dari kedudukan tertentu membantu dalam kes di mana anda perlu mencari dalam serpihan yang diketahui, dan bukan dalam keseluruhan baris.

BAHAGIAN 1. KAEDAH (26).

1.1. Kaedah asas (10). Bebas, dibina berdasarkan algoritma mudah mereka sendiri.

Page_Add() (tambahan kanan-kiri dengan aksara tertentu).

Page_Inverse () (inversi - aksara dari kanan ke kiri).

Page_Codes() (kod aksara melalui ”,” dan tatasusunan dengan kod)

Page_Characters() (rentetan kod yang dipisahkan oleh ”,” atau daripada tatasusunan dengan kod)

Page_ReplaceSymbols() (menggantikan beberapa aksara dengan yang lain).

String_FromArray() (rentetan daripada susunan serpihan yang dipisahkan oleh pemisah)

Page_FindIn() (cari subrentetan (termasuk di sebelah kanan) dengan nombor kejadian yang ditentukan).

Page_FindGr() (Cari sekumpulan aksara yang disertakan dalam set aksara yang ditentukan)

Page_FindNumber() (Cari nombor, termasuk di sebelah kanan dengan nombor kejadian yang ditentukan)

Page_Interpret() (ke dalam tatasusunan, mengikut sintaks yang ditetapkan)

1.2. Kaedah terbitan (12). Sebenarnya, ini adalah penggunaan empat kaedah algoritma umum (lihat Bahagian 2)

Page_Number() (dari awal dan dari akhir baris, jangan "takut" dengan aksara bukan angka.

Page_Find() (cari subrentetan (termasuk huruf kecil dan ke kanan) dengan nombor kejadian yang ditentukan).

Page_Replace() (cari (termasuk huruf kecil dan tangan kanan), dan gantikan subrentetan pembatas).

String_Piece() (sekeping rentetan antara kejadian yang ditentukan bagi pembatas (kiri atau kanan)).

Page_ReplacePiece() (menggantikan "ketulan" dalam rentetan sumber dengan rentetan yang ditentukan).

Page_ВArray() (antara kejadian pemisah yang ditentukan (termasuk di sebelah kanan dan tanpa kes).

Page_TransferBySyllables() (dipecahkan kepada subrentetan "Hampir tidak", dengan tanda sempang).

Page_MoveByWords() (dipecahkan kepada subrentetan "Secara lembut")

Page_Cut() (“Potong” ke dalam subrentetan panjang tertentu)

Str_Shorten() (gantikan kumpulan kiri aksara "disingkat" dengan "rentetan penggantian"

Page_Abbreviation() (gantikan kumpulan yang betul bagi aksara "dikurangkan" dengan "rentetan penggantian"

Str_ShortenS() (gantikan di tengah-tengah kumpulan aksara "dipendekkan" dengan "rentetan penggantian"

Page_Extend (pengembangan kepada panjang tertentu dengan menambah bilangan aksara yang ditentukan)

1.3. Kaedah terperinci (3). "Membedah" baris dengan pemindahan ke jadual dengan maklumat terperinci.

Page_vTableIn() (ke dalam jadual mengikut sistem pembatas bersarang).

Page_vTableGr (ke jadual mengikut penapis berbilang peringkat).

Page_inTableNumbers (dalam jadual dengan nombor dan serpihan di antaranya).

BAHAGIAN 2. KAEDAH-ALGORIM AM (3).

Page_Occurrence() (kaedah "Cari" dan "Ganti").

Page_Fragments() (kaedah "Piece","ReplacePiece,"InArray", "inTableIn").

Page_Abcr() (kaedah "AbcrL", "AbcrP", "AbcrS", "Expand".

Page_Split() (kaedah “Bergerak Mengikut Suku Kata”, “Bergerak Mengikut Perkataan”, “Potong”).

BAHAGIAN 3. FUNGSI UNIVERSAL.

Ini adalah sejenis antara muka pengaturcaraan bersyarat yang membolehkan

gunakan beberapa kaedah pada rentetan sekaligus. Dilaksanakan sebagai

fungsi dengan tujuh parameter ("Demo" dibina pada fungsi ini):

Halaman_(Kaedah, Subkaedah, Input, Param1, Param2, Length_Number_Position, Output Tambahan)

Parameter:

- "Kaedah" - beberapa kaedah "digabungkan" dan (atau) satu kaedah "eksklusif".

(kod atau nama aksara tunggal, mungkin melalui ","")

- "Subkaedah" - beberapa pilihan "digabungkan" dan (atau) "eksklusif".

kaedah "eksklusif" (kod atau nama aksara tunggal);

- "Input" - Rentetan, atau Tatasusunan atau Jadual nilai;

- "Param1" - rentetan carian, penggantian, pemisah, penapis;

- "Param2" - rentetan penggantian atau aksara;

- "Length_Number_Position" -Nombor, Nombor melalui pemisah atau tatasusunan dengan Nombor;

- "Output Tambahan" - Nombor atau Rentetan atau Tatasusunan atau Jadual Nilai;

Nama dan/atau kod satu aksara subkaedah, serta nombor dalam

(Length_Number_Position) boleh dalam apa jua keadaan dan diasingkan

mana-mana pembatas berikut: ”, :;”.

BAHAGIAN 4. BEBERAPA CONTOH.

TerdapatNumbersInLine=(Str_FindNumber(InLine)<>Tidak ditentukan);

Terdapat Nombor dalam Baris = (String_FindGr(Inline,"+0123456789")>0);

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

Terdapat Tanda Tertentu = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

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

BAHAGIAN 5. KESIMPULAN.

Jika boleh, saya berjaya dengan satu hantaran di sepanjang garisan. Hantaran kedua biasanya dalam serpihan. Saya tidak menggunakan fungsi terbina dalam StrNumberOccurrences().

Fungsi terbina dalam telah digunakan: Kiri(), Kanan(), Tengah(), StrLength()

- (meletakkan dan mendapatkan sebahagian daripada barisan mestilah "cepat").

Jenis String terdapat dalam semua bahasa pengaturcaraan. Ia adalah primitif, dan dalam 1C terdapat banyak fungsi untuk bekerja dengannya. Dalam artikel ini kita akan melihat secara terperinci pelbagai cara bekerja dengan jenis rentetan dalam 1C 8.3 dan 8.2 menggunakan contoh.

Talian

Untuk menukar pembolehubah apa-apa jenis kepada rentetan, terdapat fungsi dengan nama yang sama "String()". Parameter input akan menjadi pembolehubah itu sendiri, perwakilan rentetan yang mesti diperolehi.

String(False) // mengembalikan "Tidak"
String(12345) // mengembalikan "12,345"
String(CurrentDate()) //"07/21/2017 11:55:36″

Ia adalah mungkin untuk menukar bukan sahaja jenis primitif kepada rentetan, tetapi juga yang lain, sebagai contoh, elemen direktori dan dokumen.

SokrLP, SokrL, SokrP

Parameter input bagi fungsi ini ialah pembolehubah jenis rentetan. Fungsi mengalih keluar aksara yang tidak penting (ruang, pemulangan pengangkutan, dll.): dari sisi kiri dan kanan, hanya dari sebelah kiri, dan hanya dari sebelah kanan, masing-masing.

Singkatan(" Ruang akan dialih keluar pada kedua-dua belah ") // "Ruang akan dialih keluar pada kedua-dua belah"
Singkatan(" Ruang pada kedua-dua belah akan dialih keluar ") // " Ruang di sebelah kiri akan dialih keluar "
Singkatan(" Ruang di kedua-dua belah akan dialih keluar ") // " Ruang di sebelah kanan akan dialih keluar"

Leo, Kanan, Sederhana

Fungsi ini membolehkan anda memangkas sebahagian daripada rentetan. Fungsi "Left()" akan mengembalikan bahagian rentetan dari sebelah kiri panjang yang ditentukan. Fungsi "Right()" adalah serupa, tetapi memangkas dari kanan. Fungsi "Purata()" membolehkan anda menentukan bilangan aksara dari mana baris itu akan dipilih dan panjangnya.

Lev("Pembolehubah rentetan", 4) // mengembalikan "Str"
Right("String variable", 7) // mengembalikan "variable"
Sederhana("Pembolehubah rentetan", 2, 5) // mengembalikan "troco"

StrLength

Fungsi ini menentukan bilangan aksara yang terkandung dalam pembolehubah rentetan.

StrLength("Word") // hasil pelaksanaan akan menjadi nombor 5

Cari

Fungsi ini memungkinkan untuk mencari sebahagian daripada rentetan dalam pembolehubah rentetan. Nilai pulangan ialah nombor yang menunjukkan kedudukan permulaan rentetan yang ditemui. Jika tiada padanan ditemui, sifar dikembalikan.

Sila ambil perhatian bahawa carian adalah sensitif huruf besar. Jika terdapat lebih daripada satu kejadian subrentetan carian dalam rentetan asal, fungsi akan mengembalikan permulaan kejadian pertama.

Find("satu, dua, satu, dua, tiga", "dua") // fungsi akan mengembalikan nombor 6

EmptyString

Menggunakan fungsi ini membolehkan anda menentukan sama ada rentetan kosong. Watak kecil seperti ruang, pemulangan kereta dan lain-lain tidak diambil kira.

EmptyString("Pupkin Vasily Ivanovich") // fungsi akan mengembalikan nilai False
EmptyString(" ") // fungsi akan mengembalikan nilai True

VReg, NReg, TReg

Fungsi ini sangat berguna apabila membandingkan dan menukar pembolehubah rentetan. "Vreg()" akan mengembalikan rentetan asal dalam huruf besar, "HPreg()" dalam huruf kecil, dan "TReg()" akan memformatkannya supaya aksara pertama setiap perkataan individu ditulis dengan huruf besar, dan semua aksara berikutnya ditulis dengan huruf besar.

VReg("GENERAL DIRECTOR") // nilai pulangan - "GENERAL DIRECTOR"
NReg(“CEO DIRECTOR”) // nilai pulangan – “CEO”
TREG(“CEO DIRECTOR”) // nilai pulangan – “Ketua Pengarah”

PageReplace

Fungsi ini serupa dengan penggantian dalam penyunting teks. Ia membolehkan anda menggantikan satu aksara atau set aksara dengan yang lain dalam pembolehubah rentetan.

StrReplace("merah, putih, kuning", ","", ";") // mengembalikan "merah; putih; kuning"

StrNumberLines

Fungsi ini membolehkan anda menentukan bilangan baris yang dipisahkan oleh pemulangan pengangkutan dalam pembolehubah teks.

Gelung dalam contoh di bawah akan melalui tiga pusingan kerana fungsi LineNumberRow akan mengembalikan nilai 3:

Untuk ind = 1 dengan StrBilangan Rentetan ("Baris1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") Kitaran
<тело цикла>
EndCycle;

StrGetString

Fungsi ini berfungsi dengan teks berbilang baris dengan cara yang sama seperti yang sebelumnya. Ia membolehkan anda mendapatkan rentetan tertentu daripada pembolehubah teks.

StrGetString("String1" + Characters.PS + "String2" + Characters.PS + "String3", 2) // kembalikan "String2"

PageNumberOccurrences

Fungsi ini mengira bilangan kemunculan aksara atau subrentetan dalam rentetan carian.

StrNumberAttachments("a;b;c;d; ", ";") // fungsi akan mengembalikan nombor 4

Simbol dan Kod Simbol

Fungsi-fungsi ini membolehkan anda mendapatkan aksara melalui kodnya dalam pengekodan Unicode, serta menentukan kod ini dengan aksara itu sendiri.

SymbolCode("A") // fungsi akan mengembalikan nombor 1,040
CharacterCode(1040) // fungsi akan mengembalikan "A"

Tugas biasa apabila bekerja dengan rentetan

Rentetan Menggabungkan

Untuk menggabungkan beberapa rentetan (untuk melakukan penggabungan), cukup menggunakan operator penambahan.

“Baris 1″ + “Baris 2″ //hasil penambahan dua baris akan menjadi “Baris 1 Baris 2”

Penukaran Jenis

Untuk menukar jenis kepada rentetan, sebagai contoh, pautan ke elemen direktori, nombor, dsb., cukup untuk menggunakan fungsi "String()". Fungsi seperti "ScrLP()" juga akan menukar pembolehubah menjadi rentetan, tetapi serta-merta dengan memotong aksara yang tidak penting.

String(1000) // mengembalikan "1,000"

Sila ambil perhatian bahawa apabila menukar nombor kepada rentetan, program secara automatik menambah ruang yang memisahkan ribu. Untuk mengelakkan ini, anda boleh menggunakan binaan berikut:

StrReplace(String(1000),Characters.NPP,"") // mengembalikan "1000"

String(Format(1000,"HG=")) // mengembalikan "1000"

Petikan dalam rentetan

Selalunya anda perlu berurusan dengan keperluan untuk menentukan tanda petikan dalam pembolehubah rentetan. Ini boleh sama ada teks permintaan yang ditulis dalam configurator, atau hanya pembolehubah. Untuk menyelesaikan masalah ini, anda hanya perlu menetapkan dua tanda petikan.

Header = String("Horns and Hooves LLC - itulah kami!") // akan mengembalikan "Horns and Hooves LLC - itulah kami!"

Berbilang baris, putus baris

Untuk mencipta teks berbilang baris, cuma tambah pemisah baris (Symbols.PS) padanya.

MultilineText = "Barisan Pertama" + Simbol.PS + "Barisan Kedua"

Bagaimana untuk membuang ruang

Untuk mengalih keluar ruang di sebelah kanan atau kiri, anda boleh menggunakan fungsi "ScrAP()" (serta "ScrL()" dan "ScrP()"):

StringNoSpaces = Singkatan (" Banyak huruf ") // fungsi akan mengembalikan nilai "Banyak huruf"

Jika, selepas menukar nombor kepada rentetan, anda perlu mengalih keluar ruang yang tidak putus, gunakan pembinaan berikut:

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // mengembalikan "99999"

Pengaturcara juga sering menggunakan binaan berikut, yang membolehkan anda mengalih keluar atau menggantikan dengan aksara lain semua ruang dalam pembolehubah teks:

StringNoSpaces = StrReplace("hello","") // mengembalikan "hello"

Membandingkan rentetan antara satu sama lain

Anda boleh membandingkan istilah dengan tanda sama yang biasa. Perbandingan adalah sensitif huruf besar-besaran.

"Hello" = "hello" // returns False
"Hello" = "Hello" // mengembalikan Benar
"Hello" = "Selamat tinggal" // returns False