قائمة
بدون مقابل
التسجيل
الصفحة الرئيسية  /  الوسائط المتعددة/ وظائف للعمل مع السلسلة 1s. وظائف السلاسل الجديدة

وظائف للعمل مع السلسلة 1s. وظائف السلاسل الجديدة

أهلا
طلبوا مني اليوم عدم عرض بادئة المستند عند طباعة مستند التنفيذ ، وتم حل المشكلة على النحو التالي.

StrReplace (Number، Lion (Number، 3)، "") ؛

عندما نظرت إلى مساعد بناء الجملة ، أحببته كثيرًا لدرجة أنني أردت الكتابة عنه العمل مع السلاسل في 1C: Enterprise.

تشير السلسلة في 1C إلى نوع بيانات بدائي.

إذا نظرت في تعليمات 1C ، فسترى الوصف التالي لنوع String (String)
تحتوي القيم من هذا النوع على سلسلة Unicode بطول عشوائي.
إذا كان في كلماتك الخاصة عن الأوتار ، فستعمل. السلسلة عبارة عن ثابت يتكون من أحرف مختلفة ، وتحيط به دائمًا علامات اقتباس.

مواصفات السلسلة
العنوان = "مرحبًا راكب" ؛

غالبًا ما يتم إنشاء السلاسل متعددة الأسطر في التكوينات النموذجية باستخدام الفاصل الرأسي "|":
سلسلة = "متعدد الأسطر
| سلسلة
| الكتابة
| نص "؛

يتم تحديد علامة الاقتباس داخل سلسلة بعلامات اقتباس مزدوجة.
String = "" نص بين علامتي اقتباس ""؛

هناك العديد من العمليات على السلاسل (البحث داخل سلسلة ، وتحديد أولها ، وما إلى ذلك) ، فمن الأفضل إلقاء نظرة على مساعد بناء الجملة.
مساعد بناء الجملة - وصف عام للغة المضمنة-> وظائف مضمنة-> وظائف للعمل مع السلاسل.

وظائف للعمل مع الأوتار

هنا ، في شكل موجز ، سأقدم وظائف للعمل مع السلاسل:

VReg (<Строка>) - تقوم الوظيفة بتحويل جميع أحرف السلسلة إلى أحرف كبيرة.

رمز الرمز (<Строка>, <НомерСимвола>) - تستقبل الوظيفة رمز الحرف الموجود في السلسلة التي تم تمريرها في الموضع مع الرقم المحدد.

أسد(<Строка>, <ЧислоСимволов>) - تحدد الوظيفة الأحرف الأولى من يسار السلسلة.

لايجاد(<Строка>, <ПодстрокаПоиска>) - تكتشف الوظيفة حدوث السلسلة التي يتم البحث عنها كسلسلة فرعية في السلسلة الأصلية.

HReg (<Строка>) - تقوم الوظيفة بتحويل جميع أحرف السلسلة إلى أحرف صغيرة.

حق(<Строка>, <ЧислоСимволов>) - تختلف هذه الوظيفة عن الوظائف اليسرى في أنها تحدد الأحرف الأخيرة من يمين السلسلة.

خط فارغ (<Строка>) - تتحقق الوظيفة من وجود أحرف ذات دلالة في السلسلة.

رمز(<КодСимвола>) - تقوم الوظيفة بتحويل رمز الحرف إلى سلسلة تحتوي على الحرف.

أببر (<Строка>) - تقطع الوظيفة الأحرف غير المهمة إلى يسار أول حرف مهم في السلسلة.

أببرل (<Строка>) - تقطع الوظيفة الأحرف غير المهمة إلى يسار أول حرف مهم في السلسلة ، والمسافات على يمين آخر حرف مهم في السلسلة.

اختصار (<Строка>) - تقطع الوظيفة الأحرف غير المهمة إلى يمين آخر حرف مهم في السلسلة.

الأربعاء(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - تحدد الوظيفة سلسلة من الأحرف ، تبدأ بالحرف<НачальныйНомер>، المجموع<ЧислоСимволов>.

سترلينجث (<Строка>) - تحصل الوظيفة على عدد الأحرف في السلسلة.

StrReplace (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) - تبحث الوظيفة عن جميع تكرارات سلسلة البحث الفرعية في سلسلة المصدر وتستبدلها بسلسلة فرعية بديلة.

StrGetString (<Строка>, <НомерСтроки>) - تحصل الوظيفة على سلسلة سلسلة متعددة الأسطر حسب الرقم.

عدد الأحداث (<Строка>, <ПодстрокаПоиска>) - تحسب الوظيفة عدد تكرارات سلسلة البحث الفرعية في سلسلة المصدر.

عدد الخطوط (<Строка>) - تحسب الوظيفة عدد الأسطر في سلسلة متعددة الأسطر. في سلسلة متعددة الأسطر ، يتم فصل السطور بأحرف سطر جديد.

TReg (<Строка>) - تقوم الوظيفة بتحويل السلسلة إلى حالة العنوان. هذا يعني أنه بالنسبة لكل كلمة ، يتم تحويل الحرف الأول إلى حالة أحرف كبيرة ، أو إلى حالة أحرف كبيرة إذا لم يتم تحديد حالة عنوان للحرف. يتم تحويل باقي الأحرف إلى أحرف صغيرة.

اكتب التحويلات
لتحويل نوع البيانات الصريح ، هناك وظائف بنفس الاسم مع نوع البيانات التي يتم التحويل إليها: String (<Значение>)

StringFromNumbers = سلسلة (رقم) ،

تم وصف كل هذه الوظائف بالتفصيل في مساعد بناء الجملة ، كيف يمكن لمساعد بناء الجملة أن يساعد مبرمجًا مبتدئًا ، كما وصفته في المقالة.

أمثلة على السلاسل

تحويل الرقم إلى سلسلة والعكس.

للحصول على تمثيل سلسلة للسنة ، استخدم الدالة Format.

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

لتحويل رقم إلى سلسلة بدون إدخال حرف فاصل للمجموعة (مسافة غير منقسمة) ، تحتاج إلى تطبيق وظيفة التنسيق مع NH = 0 المعلمة:

الرقم = 2012 String = التنسيق (رقم ، "NW = 0") ؛ // String = "2012"

سلسلة لا مسافات.

ملاحظات من النظر إلى الزجاج

08/18/2014 وظائف جديدة للعمل مع السلاسل

تم تنفيذه في الإصدار 8.3.6.1977.

لقد قمنا بتوسيع مجموعة الوظائف للعمل مع السلاسل. لقد فعلنا ذلك لنمنحك المزيد من الأدوات المتقدمة لتحليل بيانات السلسلة. ستكون الوظائف الجديدة مريحة ومفيدة في المهام التكنولوجية لتحليل النص. في المهام المتعلقة بتحليل النص الذي يحتوي على بيانات في نموذج منسق. قد يكون هذا هو تحليل بعض الملفات الواردة من الجهاز ، أو ، على سبيل المثال ، تحليل السجل التكنولوجي.

جميع الإجراءات التي تؤديها الوظائف الجديدة ، يمكنك القيام بها من قبل. بمساعدة خوارزميات معقدة أكثر أو أقل مكتوبة بلغة مضمنة. لذلك ، لا تمنحك الوظائف الجديدة أي فرص جديدة في الأساس. ومع ذلك ، فهي تسمح لك بتقليل مقدار الكود ، وجعل الكود أبسط وأكثر قابلية للفهم. بالإضافة إلى ذلك ، فهي تتيح لك تسريع تنفيذ الإجراءات. لأن الوظائف المنفذة في النظام الأساسي تعمل ، بالطبع ، أسرع من خوارزمية مماثلة مكتوبة باللغة المضمنة.

وظيفة التنسيق StrTemplate ()

هذه الوظيفة تستبدل المعلمات في سلسلة. غالبًا ما تنشأ الحاجة إلى مثل هذا التحويل ، على سبيل المثال ، عند عرض رسائل التحذير. بناء جملة هذه الوظيفة كما يلي:

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

<Шаблон>هي السلسلة التي يتم فيها استبدال تمثيلات المعلمة.

<Значение1> , ... <Значение10>- هذه هي المعلمات (الحد الأقصى - عشرة) ، والتي يجب استبدال تمثيلاتها في السلسلة.

لتحديد مكان معين في القالب الذي تريد إجراء الاستبدال إليه ، تحتاج إلى استخدام علامات النموذج٪ 1 ، ...٪ 10. يجب أن يتطابق عدد العلامات المتضمنة في القالب وعدد المعلمات التي تحتوي على قيم.

على سبيل المثال ، نتيجة تنفيذ مثل هذا المشغل:

سيكون هناك خط:

خطأ في البيانات في السطر 2 (يتطلب نوع التاريخ)

وظيفة السلسلة StrCompare ()

تقارن هذه الوظيفة حالة السلسلتين بشكل غير حساس. على سبيل المثال ، مثل هذا:

يمكنك تنفيذ نفس الإجراء قبل استخدام الكائن مقارنة القيم:

ومع ذلك ، فإن استخدام الوظيفة الجديدة يبدو أبسط. وإلى جانب ذلك ، وظيفة ، على عكس الكائن مقارنة القيم، يعمل في كل من العميل الرقيق وعميل الويب.

وظائف السلسلة StrBeginsC () ، StrEndsTo ()

تحدد هذه الوظائف ما إذا كانت السلسلة تبدأ بسلسلة فرعية محددة ، أو ما إذا كانت السلسلة تنتهي بسلسلة فرعية محددة. ليس من الصعب تنفيذ خوارزمية هذه الوظائف بلغة مضمنة ، لكن وجودها يسمح لك بكتابة كود أنظف وأكثر قابلية للفهم. وهم يعملون بشكل أسرع.

على سبيل المثال ، من الملائم استخدامها في المشغل إذا:

وظائف للعمل مع السلاسل StrSplit () ، StrJoin ()

تقوم هذه الوظائف بتقسيم السلسلة إلى أجزاء وفقًا للمحدد المحدد. أو بالعكس ، يقومون بدمج عدة أسطر في سطر واحد ، مع إدخال الفاصل المحدد بينهم. إنها ملائمة لإنشاء أو تحليل السجلات ، السجل التكنولوجي. على سبيل المثال ، يمكنك بسهولة تفكيك إدخال السجل التكنولوجي إلى أجزاء مناسبة لمزيد من التحليل:

وظيفة العمل مع السلاسل StrFind ()

بدلا من الوظيفة القديمة لايجاد()لقد قمنا بتنفيذ ميزة جديدة لها ميزات إضافية:

  • البحث في اتجاهات مختلفة (من البداية ، من النهاية) ؛
  • البحث من الموقع المحدد ؛
  • ابحث عن تواجد بالرقم المحدد (ثانيًا ، ثالثًا ، إلخ).

في الواقع ، إنها تكرر قدرات الوظيفة القديمة. يتم ذلك من أجل الحفاظ على التوافق مع الوحدات المترجمة في الإصدارات القديمة. وظيفة قديمة لايجاد()يوصى بعدم استخدامه مرة أخرى.

يوجد أدناه مثال باستخدام إمكانات البحث الجديدة. يعد البحث للخلف مفيدًا عندما تحتاج إلى آخر جزء من سلسلة رسمية ، مثل الاسم الكامل لملف في عنوان URL. ويساعد البحث من موقع محدد في الحالات التي تحتاج فيها إلى البحث في جزء معروف ، وليس في السلسلة بأكملها.

هناك آليات قليلة للعمل مع السلاسل في استعلامات 1C. أولاً ، يمكن إضافة السلاسل. ثانيًا ، يمكن أخذ سلسلة فرعية من سلسلة. ثالثًا ، يمكن مقارنة السلاسل ، بما في ذلك حسب النمط. هذا كل ما يمكنك فعله بالسلاسل.

إضافة سلسلة

يتم استخدام عامل التشغيل "+" لإضافة سلاسل في الاستعلام. يمكنك فقط إضافة سلاسل ذات طول محدود.

حدد "الاسم:" + Contractors.Name AS Column1 من Directory.Contractors AS Contractors WHERE Contractors.Reference = & Reference

وظيفة السلسلة الفرعية

التضمين (<Строка>, <НачальнаяПозиция>, <Длина>)

تناظرية لوظيفة البيئة () من نموذج الكائن. يمكن تطبيق الدالة Substring () على بيانات نوع السلسلة وتسمح لك بتحديد جزء <Строки> ، بدءًا من حرف رقمي <НачальнаяПозиция> (يتم ترقيم الأحرف في سلسلة من 1) والطول <Длина> الشخصيات. نتيجة تقييم الوظيفة لها نوع سلسلة متغير الطول ، وسيتم اعتبار الطول غير محدود إذا <Строка> طول ومعلمة غير محدودة <Длина> ليس ثابتًا أو أكبر من 1024.

إذا كان طول السلسلة أقل من المحدد في المعلمة الثانية ، فستقوم الوظيفة بإرجاع سلسلة فارغة.

انتباه!لا ينصح باستخدام الدالة SUBSTRING () لتحويل السلاسل ذات الطول غير المحدود إلى سلاسل ذات طول محدود. بدلاً من ذلك ، من الأفضل استخدام عامل التشغيل EXPRESS ().

وظيفة مماثلة

إذا احتجنا إلى التأكد من أن سمة السلسلة تفي بمعايير معينة ، فنحن نقارنها:

حدد Counterparties.Name AS Column1 من Directory.Counterparties AS Counterparties WHERE Counterparties.Name = "Gazprom"

ولكن ماذا لو كانت هناك حاجة إلى مقارنة أكثر دقة؟ ليس فقط من أجل المساواة أو عدم المساواة ، ولكن للتشابه مع نمط معين؟ هذا هو بالضبط ما تم إنشاء وظيفة LIKE من أجله.

LIKE - عامل للتحقق مما إذا كانت السلسلة تشبه النمط. التناظرية من LIKE في SQL.

يسمح لك عامل التشغيل LIKE بمقارنة قيمة التعبير المحدد على يساره بسلسلة القالب المحددة على اليمين. يجب أن تكون قيمة التعبير من نوع سلسلة. إذا كانت قيمة التعبير تتطابق مع القالب ، فستكون نتيجة عامل التشغيل TRUE ، وإلا ستكون FALSE.

الأحرف التالية في سلسلة القالب هي أحرف خدمة ولها معنى مختلف عن حرف السلسلة:

  • النسبة المئوية (النسبة المئوية): تسلسل يحتوي على أي عدد من الأحرف العشوائية ؛
  • _ (شرطة سفلية): شخصية تعسفية واحدة ؛
  • [...] (واحد أو أكثر من الأحرف داخل أقواس مربعة): أي حرف واحد مدرج داخل أقواس مربعة. يمكن أن يحتوي التعداد على نطاقات ، مثل a-z ، مما يعني أي حرف داخل النطاق ، بما في ذلك نهايات النطاق ؛
  • [^ ...] (بين قوسين معقوفين ، توجد علامة نفي متبوعة بحرف واحد أو أكثر): أي حرف واحد بخلاف تلك المدرجة التي تلي علامة النفي.

أي رمز آخر يعني نفسه ولا يحمل أي عبء إضافي. إذا كان من الضروري كتابة أحد الأحرف المدرجة بنفسه ، فيجب أن يسبقه<Спецсимвол>. نفسي<Спецсимвол>(أي حرف مناسب) يتم تعريفه في نفس العبارة بعد الكلمة المفتاحية SPECIAL CHARACTER.

الجمل في 1C 8.3 في اللغة المضمنة 1c هي قيم من النوع البدائي خط. تحتوي القيم من هذا النوع على سلسلة Unicode بطول عشوائي. متغيرات نوع السلسلة هي مجموعة من الأحرف محاطة بعلامات اقتباس.

مثال 1. لنقم بإنشاء متغير سلسلة مع النص.

StringVariable = "أهلاً بالعالم!" ؛

وظائف للعمل مع السلاسل في 1s 8.3

سيوفر هذا القسم الوظائف الرئيسية التي تسمح لك بتغيير الأسطر في 1s ، أو تحليل المعلومات الواردة فيها.

سترلينجث

سترلينجث (<Строка>) . تُرجع عدد الأحرف الموجودة في السلسلة التي تم تمريرها في المعلمة.

مثال 2. دعنا نحسب عدد الأحرف في السلسلة "Hello world!".

String = "أهلاً بالعالم!" ؛ عدد الأحرف = StrLength (سلسلة) ؛ تقرير (عدد الشخصيات) ؛

ستعرض نتيجة تنفيذ هذا الرمز عدد الأحرف في السلسلة: 11.

مختصر

أببر (<Строка>) . لاقتطاع الأحرف غير المهمة إلى يسار أول حرف مهم في السلسلة.
شخصيات تافهة:

  • الفضاء؛
  • مسافة غير منقسمة؛
  • جدولة؛
  • إرجاع؛
  • ترجمة خطية
  • ترجمة النموذج (صفحة).

مثال 3. قم بإزالة كل المسافات من الجانب الأيسر من السلسلة "سلام!" وإلحاق السلسلة "Hello" بها.

String = abbr ("world!") ؛ سلسلة = "مرحبًا" + سلسلة ؛ إعلام (سلسلة) ؛

ستكون نتيجة تنفيذ هذا الرمز عرض السلسلة "Hello world!".

اختصار

اختصار (<Строка>) . يقطع الأحرف غير المهمة إلى يمين أول حرف مهم في السلسلة.

مثال 4. شكل من السلاسل "Hello" و "world!" عبارة "Hello world!"

السلسلة = abbr ("Hi") + "" + abbr ("world!") ؛ إعلام (سلسلة) ؛

يختصر LP

أببرل (<Строка>) . يقطع الأحرف غير المهمة إلى يمين الحرف الأول المهم في السلسلة ، ويقطع أيضًا الأحرف غير المهمة الموجودة على يسار الحرف الأول المهم في السلسلة. تُستخدم هذه الوظيفة أكثر من الوظيفتين السابقتين ، لأنها أكثر تنوعًا.

مثال 5. قم بإزالة الأحرف غير المهمة على اليسار واليمين من اسم الطرف المقابل.

المقاول = Directories.Contractors.FindBy Details ("TIN"، "0777121211") ؛ ContractorObject = Contractor.GetObject () ، ContractorObject.Description = مختصر LP (ContractorObject.Description) ؛ ContractorObject.Write () ؛

أسد

أسد(<Строка>, <ЧислоСимволов>) . يحصل على الأحرف الأولى من سلسلة ، يتم تحديد عدد الأحرف في المعلمة عدد الشخصيات.

مثال 6. دع الهيكل الموظفتحتوي على اسم ولقب واسم عائلي للموظف. الحصول على سلسلة مع اسم العائلة والأحرف الأولى.

InitialName = Lion (Employee.Name، 1) ؛ الأحرف الأولى من اسم الأب = الأسد (الموظف. اسم العائلة ، 1) ؛ FullName = Employee.LastName + "" + الاسم الأول الأولي + "." + اسم الأب الأول + "."؛

حقوق

حق(<Строка>, <ЧислоСимволов>) . يحصل على الأحرف الأخيرة من سلسلة ، يتم تحديد عدد الأحرف في المعلمة عدد الشخصيات.إذا تجاوز عدد الأحرف المحدد طول السلسلة ، فسيتم إرجاع السلسلة بأكملها.

مثال 7. دع التاريخ يُكتب في نهاية متغير سلسلة بالتنسيق "yyyymmdd" ، احصل على سلسلة ذات تاريخ وقم بتحويلها إلى نوع تاريخ.

String = "التاريخ الحالي: 20170910" ؛ StringData = الحقوق (سلسلة ، 8) ؛ التاريخ = التاريخ (StringDate) ؛

الأربعاء

الأربعاء(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . الحصول على سلسلة فرعية من السلسلة التي تم تمريرها في المعلمة خط، بدءًا من الحرف الذي تم تحديد رقمه في المعلمة الرقم الأوليوالطول الذي تم تمريره إلى المعلمة عدد الشخصيات.يبدأ ترقيم الأحرف في سلسلة من 1. إذا كانت المعلمة الرقم الأوليتم تحديد قيمة أقل من أو تساوي الصفر ، ثم تأخذ المعلمة القيمة 1. إذا كانت المعلمة عدد الشخصياتلم يتم تحديد الأحرف حتى نهاية السلسلة.

مثال 8. دع متغير السلسلة يحتوي على كود المنطقة بدءًا من الموضع التاسع ، يجب أن تحصل عليه وتكتبه في سطر منفصل.

السلسلة = "المنطقة: 99 موسكو" ؛ المنطقة = متوسط ​​(صف ، 9 ، 2) ؛

PageFind

StrFind (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . البحث عن سلسلة فرعية محددة في سلسلة ، وإرجاع رقم الموضع للحرف الأول من السلسلة الفرعية التي تم العثور عليها. ضع في اعتبارك معلمات هذه الوظيفة:

  • خط. سلسلة المصدر ؛
  • بحث. السلسلة الفرعية المطلوبة ؛
  • DirectionSearch. يحدد الاتجاه للبحث عن سلسلة فرعية في سلسلة. يمكن أن تأخذ القيم:
    • اتجاه البحث. من البداية;
    • اتجاه البحث. من النهاية;
  • يبدأ فى مكان. يحدد الموضع في السلسلة لبدء البحث ؛
  • رقم الدخول. يحدد عدد تكرارات السلسلة الفرعية التي تم البحث عنها في سلسلة المصدر.

مثال 9. في السطر "Hello world!" تحديد موضع التكرار الأخير للحرف "و".

PositionNumber = StrFind ("Hello World!"، "and"، SearchDirection.From End)؛ إخطار (PositionNumber) ؛

ستكون نتيجة تنفيذ هذا الرمز عرض رقم التكرار الأخير للرمز "و" على الشاشة: 9.

VReg

VReg (<Строка>) . يحول جميع أحرف السلسلة المحددة إلى 1s 8 إلى أحرف كبيرة.

مثال 10. تحويل الجملة "hello world!" إلى الحالة العليا.

StringVreg = Vreg ("hello world!")؛ تقرير (StringVreg) ؛

ستكون نتيجة تنفيذ هذا الرمز عرض السلسلة "HELLO WORLD!"

HReg

HReg (<Строка>) . يحول كل أحرف السلسلة المحددة إلى 1s 8 إلى أحرف صغيرة.

مثال 11. تحويل السلسلة "HELLO WORLD!" إلى الأحرف الصغيرة.

StringNreg = NReg ("HELLO WORLD!") ، تقرير (StringVreg) ؛

ستكون نتيجة تنفيذ هذا الرمز عرض السلسلة "hello world!"

TReg

TReg (<Строка>) . تحويل سلسلة كما يلي: يتم تحويل الحرف الأول من كل كلمة إلى أحرف كبيرة ، ويتم تحويل الأحرف المتبقية من الكلمة إلى أحرف صغيرة.

مثال 12. اجعل الأحرف الأولى من الكلمات في السلسلة "hello world!" كبيرة.

StringTreg = TReg ("hello world!")؛ تقرير (StringTreg) ؛

ستكون نتيجة تنفيذ هذا الرمز عرض السلسلة "Hello World!"

رمز

رمز(<КодСимвола>) . يحصل على حرف من خلال كود Unicode الخاص به.

مثال 13. أضف اليسار واليمين إلى السطر "Hello World!" رمز ★

StringWithStars = شخصية ("9733") + "مرحبًا بالعالم!" + شخصية ("9733") ؛ تقرير (StringWithStars) ؛

ستكون نتيجة تنفيذ هذا الرمز عرض السلسلة "★ Hello World! ★"

الرمز

رمز الرمز (<Строка>, <НомерСимвола>) . الحصول على رمز حرف Unicode من السلسلة المحددة في المعلمة الأولى ، الموجودة في الموضع المحدد في المعلمة الثانية.

مثال 14. اكتشف رمز آخر حرف في السلسلة "Hello World!".

String = "Hello World!" ؛ CharacterCode = CharacterCode (String ، StrLength (String)) ، إعلام (رمز الحرف) ؛

ستكون نتيجة تنفيذ هذا الرمز عرض رمز الرمز "!" - 33.

خط فارغ

خط فارغ (<Строка>) . للتحقق مما إذا كانت السلسلة تتكون من أحرف غير مهمة فقط ، أي إذا كانت فارغة.

مثال 15. تحقق مما إذا كانت السلسلة فارغة وتتكون من ثلاث مسافات.

فارغ = EmptyString ("") ؛ تقرير (فارغ) ؛

ستكون نتيجة تنفيذ هذا الرمز عرض كلمة "نعم" (تعبير سلسلة لقيمة منطقية صحيح).

StrReplace

StrReplace (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . البحث عن جميع تكرارات سلسلة البحث الفرعية في سلسلة المصدر واستبدالها بسلسلة فرعية بديلة.

مثال 16. في السطر "Hello World!" استبدل كلمة "World" بكلمة "Friends".

String = StrReplace ("Hello World!" ، "World" ، "Friends") ؛ إعلام (سلسلة) ؛

ستكون نتيجة تنفيذ هذا الرمز عرض السلسلة "Hello Friends!"

StrNumberRows

عدد الخطوط (<Строка>) . يسمح لك بحساب عدد الأسطر في سلسلة متعددة الأسطر. للانتقال إلى سطر جديد في 1s 8 ، يتم استخدام الرمز ملاحظة(حرف تغذية السطر).

مثال 17. حدد عدد الأسطر في النص:
"السطر الأول
السطر الثاني
السطر الثالث "

Number = StrNumber of Lines ("السطر الأول" + Symbols.PS + "السطر الثاني" + Symbols.PS + "السطر الثالث") ؛ تقرير (عدد) ؛

ستكون نتيجة تنفيذ هذا الرمز عرض عدد الأسطر في النص: 3

StrGetString

StrGetString (<Строка>, <НомерСтроки>) . يحصل على سلسلة في سلسلة متعددة الأسطر برقمها. يبدأ ترقيم الأسطر من 1.

مثال 18. احصل على السطر الأخير في النص:
"السطر الأول
السطر الثاني
السطر الثالث "

النص = "السطر الأول" + الأحرف.PS + "السطر الثاني" + الأحرف. PS + "السطر الثالث" ؛ LastLine = StrGetLine (Text، StrNumber of Lines (Text)) ، إعلام (السطر الأخير) ؛

ستكون نتيجة تنفيذ هذا الرمز عرض السطر "السطر الثالث".

عدد الأحداث

عدد الأحداث (<Строка>, <ПодстрокаПоиска>) . تُرجع عدد مرات حدوث السلسلة الفرعية المحددة في سلسلة. الوظيفة حساسة لحالة الأحرف.

مثال 19. حدد عدد المرات التي يدخل فيها الحرف "c" في السطر "Lines in 1s 8.3 و 8.2" ، بغض النظر عن حالته.

السلسلة = "الأسطر الموجودة في 1s 8.3 و 8.2" ؛ عدد مرات الحدوث = عدد مرات الحدوث (Vreg (سلسلة) ، "C") ؛ تقرير (عدد مرات الحدوث) ؛

ستعرض نتيجة تنفيذ هذا الرمز عدد التكرارات على الشاشة: 2.

PageBegins From

StrBeginsFrom (<Строка>, <СтрокаПоиска>) . للتحقق مما إذا كانت السلسلة الواردة في المعلمة الأولى تبدأ بالسلسلة في المعلمة الثانية.

مثال 20. حدد ما إذا كان رقم التعريف الضريبي للطرف المقابل المحدد يبدأ بالرقم 1. دع المتغير الطرف المقابل النظراء.

TIN = المقاول TIN ؛ StartsCUnits = StrStartsC (TIN، "1") ، إذا StartsFROM1 ثم // رمزك EndIf ؛

الصفحة تنتهي في

StrEndsOn (<Строка>, <СтрокаПоиска>) . للتحقق مما إذا كانت السلسلة التي تم تمريرها في المعلمة الأولى تنتهي بالسلسلة في المعلمة الثانية.

مثال 21. حدد ما إذا كان رقم تعريف دافع الضرائب للطرف المقابل المحدد ينتهي بالرقم 2. دع المتغير الطرف المقابليتم تخزين الارتباط إلى عنصر الدليل النظراء.

TIN = المقاول TIN ؛ ينتهي برقمين = Str ينتهي بـ (TIN، "2") ؛ إذا انتهى بـ Two ثم // Your Code EndIf ؛

PageSplit

StrDivide (<Строка>, <Разделитель>, <ВключатьПустые>) . يقسم سلسلة إلى أجزاء بواسطة أحرف المحدد المحددة ويكتب السلاسل الناتجة في مصفوفة. تخزن المعلمة الأولى السلسلة الأصلية ، وتحتوي المعلمة الثانية على السلسلة التي تحتوي على المحدد ، بينما تشير المعلمة الثالثة إلى ما إذا كان يجب كتابة السلاسل الفارغة في المصفوفة (افتراضيًا صحيح).

مثال 22. لنفترض أن لدينا سلسلة تحتوي على أرقام مفصولة بالرمز "؛" ، احصل على مجموعة من الأرقام من السلسلة.

سلسلة = "1 ؛ 2 ؛ 3" ؛ Array = StrSplit (String، "؛") ؛ للعدد = 0 حسب Array.Quantity () - صفيف محاولة حلقة واحدة [Count] = Number (Ablp (Array [Count])) ؛ صفيف الاستثناء [W] = 0 ؛ EndTry EndCycle ؛

نتيجة للتنفيذ ، سيتم الحصول على مصفوفة بأرقام من 1 إلى 3.

StrConnect

StrConnect (<Строки>, <Разделитель>) . يحول مصفوفة سلاسل من المعلمة الأولى إلى سلسلة تحتوي على جميع عناصر المصفوفة باستخدام المحدد المحدد في المعلمة الثانية.

مثال 23. باستخدام مصفوفة الأرقام من المثال السابق ، احصل على السلسلة الأصلية.

للعدد = 0 حسب Array.Quantity () - 1 Loop Array [Count] = String (Array [Count]) ؛ نهاية الدورة String = StrConnect (Array، "؛") ؛

تم العثور على نوع السلسلة في جميع لغات البرمجة. إنها بدائية ، وفي 1C هناك العديد من الوظائف للعمل معها. في هذه المقالة ، سننظر بالتفصيل في الطرق المختلفة للعمل مع أنواع السلاسل في 1C 8.3 و 8.2 باستخدام الأمثلة.

خط

لتحويل متغير من أي نوع إلى سلسلة ، توجد وظيفة "String ()" بنفس الاسم. ستكون معلمة الإدخال هي المتغير نفسه ، والذي سيتم الحصول على تمثيل السلسلة له.

String (False) // تعرض "لا"
String (12345) // تعرض "12 345"
السلسلة (CurrentDate ()) //"21.07.2017 11:55:36 "

من الممكن التحويل إلى سلسلة ليس فقط الأنواع الأولية ، ولكن أيضًا إلى أخرى ، على سبيل المثال ، عناصر الدلائل والمستندات.

يختصر LP ، يختصر L ، يختصر P.

معلمات الإدخال لهذه الوظائف هي متغير من نوع السلسلة. تعمل الوظائف على إزالة الأحرف غير المهمة (المسافات ، وحروف الإرجاع ، وما إلى ذلك): من الجانبين الأيسر والأيمن ، ومن الجانب الأيسر فقط ، ومن الجانب الأيمن فقط ، على التوالي.

abbrl ("ستتم إزالة المسافات من كلا الجانبين") // "ستتم إزالة المسافات على كلا الجانبين"
اختصار ("ستتم إزالة المسافات على الجانبين") // "ستتم إزالة المسافات الموجودة على اليسار"
اختصار ("ستتم إزالة المسافات على الجانبين") // "ستتم إزالة المسافات الموجودة على اليمين"

ليو ، يمين ، وسط

تسمح لك هذه الوظائف بقطع جزء من السلسلة. ستعيد الدالة Lion () الجزء من السلسلة على جانبها الأيسر من الطول المحدد. تتشابه وظيفة "Right ()" ، ولكن يتم الاقتصاص على اليمين. تتيح لك وظيفة "الأربعاء ()" تحديد رقم الحرف الذي سيتم اختيار السلسلة من خلاله وطولها.

Lion ("String variable"، 4) // إرجاع "Stro"
Right ("String variable"، 7) // إرجاع "متغير"
متوسط ​​\ u200b \ u200b ("String variable"، 2، 5) // يعرض "troco"

سترلينجث

تحدد الوظيفة عدد الأحرف الموجودة في متغير سلسلة.

StrLength ("Word") // ستكون نتيجة التنفيذ هي الرقم 5

لايجاد

تجعل الوظيفة من الممكن البحث عن جزء من سلسلة في متغير سلسلة. ستكون القيمة المعادة رقمًا يشير إلى موضع بداية السلسلة التي تم العثور عليها. إذا لم يتم العثور على مطابقات ، يتم إرجاع الصفر.

لاحظ أن البحث حساس لحالة الأحرف. إذا كان هناك أكثر من تكرار واحد لسلسلة البحث الفرعية في السلسلة الأصلية ، فستُرجع الدالة بداية التكرار الأول.

أوجد ("واحد ، اثنان ، واحد ، اثنان ، ثلاثة" ، "اثنان") // ستعيد الدالة الرقم 6

خط فارغ

يتيح لك استخدام هذه الوظيفة تحديد ما إذا كانت السلسلة فارغة. لا يتم أخذ الأحرف غير المهمة ، مثل المسافة وأسطوانة الإرجاع وغيرها في الاعتبار.

EmptyString ("Vasily Ivanovich Pupkin") // ستعيد الوظيفة False
EmptyString ("") // ستعيد الدالة True

VReg ، NReg ، TReg

هذه الوظائف مفيدة للغاية عند مقارنة وتحويل متغيرات السلسلة. سيعيد "Vreg ()" السلسلة الأصلية بأحرف كبيرة ، و "HReg ()" بأحرف صغيرة ، وسيقوم "TReg ()" بتنسيقها بحيث يتم كتابة الحرف الأول من كل كلمة بأحرف كبيرة ، وتكون جميع الأحرف اللاحقة صغيرة.

VReg ("المدير العام") // القيمة المرجعة - "المدير العام"
HReg ("المدير العام") // القيمة المرجعة - "المدير التنفيذي"
TReg ("المدير العام") // القيمة المرجعة - "المدير العام"

StrReplace

هذه الوظيفة مشابهة للاستبدال في برامج تحرير النصوص. يسمح لك باستبدال حرف واحد أو مجموعة من الأحرف بآخر في متغيرات السلسلة.

StrReplace ("أحمر ، أبيض ، أصفر" ، "،" ، "؛") // إرجاع "أحمر ؛ أبيض؛ الأصفر"

StrNumberRows

تتيح لك الوظيفة تحديد عدد الأسطر المفصولة بأحرف إرجاع في متغير نص.

ستمر الحلقة الموجودة في المثال أدناه عبر ثلاث دوائر لأن الدالة StrNumberRows ستعيد القيمة 3:

بالنسبة إلى ind \ u003d 1 بواسطة StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") حلقة
<тело цикла>
نهاية الدورة

StrGetString

تعمل هذه الوظيفة مع النص متعدد الأسطر بنفس طريقة العمل السابق. يسمح لك بالحصول على سلسلة محددة من متغير نص.

StrGetString ("String1" + Symbols.PS + "String2" + Symbols.PS + "String3"، 2) // إرجاع "Line2"

عدد الأحداث

تحسب الدالة عدد مرات ظهور حرف أو سلسلة فرعية في السلسلة التي يتم البحث عنها.

StrNumberInstallations ("أ ، ب ، ج ، د ،" ، "،") // ستعيد الوظيفة الرقم 4

الرمز والرمز

تتيح لك هذه الوظائف الحصول على حرف من خلال كود Unicode الخاص به ، وكذلك تحديد هذا الرمز من خلال الحرف نفسه.

SymbolCode ("A") // ستعيد الوظيفة الرقم 1040
SymbolCode (1040) // ستعيد الوظيفة "A"

كثرة المهام عند العمل بالسلاسل

تسلسل السلسلة

لتسلسل سلاسل متعددة (متسلسلة) فقط استخدم عامل الإضافة.

"السطر 1" + "السطر 2" // نتيجة إضافة سطرين ستكون "السطر 1 السطر 2"

اكتب التحويل

من أجل تحويل نوع إلى سلسلة ، على سبيل المثال ، إشارة إلى عنصر قاموس ورقم وما إلى ذلك ، يكفي استخدام وظيفة "String ()". ستعمل دوال مثل "ShortLP ()" أيضًا على تحويل المتغيرات إلى سلسلة ، ولكن على الفور بقطع الأحرف غير المهمة.

ستعرض السلسلة (1000) // "1000"

يرجى ملاحظة أنه عند تحويل رقم إلى سلسلة ، يضيف البرنامج تلقائيًا مسافة تفصل بين الألف. لتجنب ذلك ، يمكنك استخدام الهياكل التالية:

StrReplace (String (1000)، Characters.NPP، "") // تُرجع "1000"

String (Format (1000، "CH =")) // سترجع "1000"

اقتباسات في سلسلة

في كثير من الأحيان ، سيتعين عليك التعامل مع الحاجة إلى وضع علامات الاقتباس في متغير سلسلة. يمكن أن يكون إما نص طلب مكتوبًا في أداة التهيئة ، أو مجرد متغير. لحل هذه المشكلة ، تحتاج فقط إلى تعيين حرفين من علامات الاقتباس.

Header = String ("Horns and Hooves LLC هي نحن!") // إرجاع "Roga and Hooves LLC هي نحن!"

متعدد الأسطر ، فاصل الأسطر

لإنشاء نص متعدد الأسطر ، يكفي إضافة أحرف فاصلة أسطر (Symbols.PS) إليه.

MultilineText = "السطر الأول" + Characters.PS + "السطر الثاني"

كيفية إزالة المسافات

لإزالة المسافات على اليمين أو اليسار ، يمكنك استخدام الوظيفة "Stretch ()" (بالإضافة إلى "Scrpt ()" و "ScreenP ()"):

StringWithoutSpaces = ShortLP ("العديد من الأحرف") // ستعيد الوظيفة القيمة "العديد من الأحرف"

إذا احتجت ، بعد تحويل رقم إلى سلسلة ، إلى إزالة المسافات غير القابلة للكسر ، فاستخدم البنية التالية:

StringWithoutSpaces = StrReplace (String (99999)، Characters.NPP، "") // إرجاع "99999"

أيضًا ، غالبًا ما يستخدم المبرمجون البناء التالي ، والذي يسمح لك بإزالة أو استبدال كل مسافات متغير نص بحرف آخر:

StringWithoutSpaces = StrReplace ("hello"، ""، ") // تعرض" hello "

مقارنة الأوتار مع بعضها البعض

يمكنك مقارنة المصطلحات بعلامة المساواة المعتادة. المقارنة حساسة لحالة الأحرف.

"hello" = "hello" // سيعود كاذب
"Hello" = "Hello" // ستعيد True
"مرحبًا" = "Goodbye" // سترجع False