خانه - پنجره ها
توابع جدید برای کار با رشته ها. توابع جدید برای کار با رشته ها عملیات با رشته های 1c

مکانیسم های کمی برای کار با رشته ها در جستارهای 1C وجود دارد. ابتدا خطوط را می توان اضافه کرد. در مرحله دوم، شما می توانید یک رشته فرعی از یک رشته بگیرید. ثالثاً، رشته ها را می توان با هم مقایسه کرد، از جمله با الگو. این احتمالاً تنها کاری است که می توان با رشته ها انجام داد.

اضافه کردن رشته

برای افزودن ردیف در یک پرس و جو، از عملیات "+" استفاده می شود. شما فقط می توانید رشته هایی با طول محدود اضافه کنید.

"Name: " + Counterparties. Name AS ستون 1 FROM Directory. Counterparties AS Counterparties WHERE Counterparties. پیوند = &پیوند

تابع رشته فرعی

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

آنالوگ تابع Environment() از مدل شی. تابع Substring() می تواند روی داده های رشته اعمال شود و به شما امکان می دهد یک قطعه را انتخاب کنید <Строки> ، با شماره کاراکتر شروع می شود <НачальнаяПозиция> (نویسه های یک خط از 1 شماره گذاری می شوند) و طول <Длина> شخصیت ها. نتیجه محاسبه تابع دارای یک نوع رشته با طول متغیر است و اگر طول آن نامحدود در نظر گرفته شود <Строка> دارای طول و پارامتر نامحدود است <Длина> ثابت یا بزرگتر از 1024 نیست.

اگر طول رشته کمتر از مقدار مشخص شده در پارامتر دوم باشد، تابع یک رشته خالی برمی گرداند.

توجه!استفاده از تابع ()SUBSTRING برای تبدیل رشته هایی با طول نامحدود به رشته هایی با طول محدود توصیه نمی شود. در عوض، بهتر است از عملگر cast () EXPRESS استفاده کنید.

تابع مشابه

اگر لازم باشد مطمئن شویم که یک ویژگی رشته دارای معیارهای خاصی است، آن را با هم مقایسه می کنیم:

طرفین را انتخاب کنید. نام به‌عنوان ستون 1 از فهرست راهنمای طرفین.

اما اگر نیاز به مقایسه ظریف تری داشته باشید چه؟ نه فقط برابری یا نابرابری، بلکه شباهت به یک الگوی خاص؟ این دقیقاً همان چیزی است که تابع SIMILAR برای آن ایجاد شده است.

LIKE - عملگر برای بررسی شباهت یک رشته به یک الگو. آنالوگ LIKE در SQL.

عملگر SIMILAR به شما امکان می دهد مقدار عبارت مشخص شده در سمت چپ آن را با رشته الگوی مشخص شده در سمت راست مقایسه کنید. مقدار عبارت باید از نوع رشته باشد. اگر مقدار عبارت با الگو مطابقت داشته باشد، نتیجه عملگر TRUE و در غیر این صورت FALSE خواهد بود.

کاراکترهای زیر در رشته الگو کاراکترهای سرویس هستند و معنایی متفاوت از کاراکتر رشته دارند:

  • % (درصد): دنباله ای حاوی هر تعداد کاراکتر دلخواه.
  • _ (تاکید): یک کاراکتر دلخواه.
  • […] (یک یا چند کاراکتر در براکت مربع): هر کاراکتر منفرد که در داخل کروشه ذکر شده است. شمارش ممکن است شامل محدوده هایی باشد، به عنوان مثال a-z، به این معنی که یک کاراکتر دلخواه در محدوده، از جمله انتهای محدوده، گنجانده شده است.
  • [^...] (در پرانتز یک علامت نفی به دنبال یک یا چند کاراکتر): هر نویسه منفرد غیر از آنهایی که در زیر علامت نفی فهرست شده اند.

هر علامت دیگری به معنای خودش است و بار اضافی را حمل نمی کند. اگر یکی از کاراکترهای فهرست شده باید به عنوان خودش نوشته شود، باید قبل از آن نوشته شود<Спецсимвол>. خودم<Спецсимвол>(هر کاراکتر مناسب) در همان عبارت بعد از کلمه کلیدی SPECIAL CHARACTER تعریف می شود.

یادداشت هایی از Through the Looking Glass

2014/08/18 توابع جدید برای کار با رشته ها

در نسخه 8.3.6.1977 پیاده سازی شده است.

ما مجموعه ای از توابع طراحی شده برای کار با رشته ها را گسترش داده ایم. ما این کار را انجام دادیم تا ابزارهای پیشرفته تری برای تجزیه داده های رشته در اختیار شما قرار دهیم. توابع جدید در وظایف فناورانه تحلیل متن راحت و مفید خواهند بود. در کارهای مربوط به تجزیه متنی که حاوی داده ها به صورت فرمت شده است. این می تواند تجزیه و تحلیل برخی از فایل های دریافت شده از تجهیزات، یا، به عنوان مثال، تجزیه و تحلیل یک گزارش فناوری باشد.

شما می توانید تمام اقداماتی را که قبلاً عملکردهای جدیدی را انجام می دهند انجام دهید. استفاده از الگوریتم های کم و بیش پیچیده که به زبان داخلی نوشته شده اند. بنابراین، توابع جدید اساساً قابلیت جدیدی به شما نمی دهند. با این حال، آنها به شما این امکان را می دهند که مقدار کد را کاهش دهید و کد را ساده تر و قابل درک تر کنید. علاوه بر این، آنها به شما اجازه می دهند تا اجرای اقدامات را سرعت بخشید. از آنجا که توابع پیاده‌سازی شده در پلتفرم، البته سریع‌تر از الگوریتم مشابهی که در یک زبان داخلی نوشته شده است، کار می‌کنند.

قالب بندی تابع StrTemplate()

این تابع پارامترها را در یک رشته جایگزین می کند. نیاز به چنین تبدیلی اغلب، به عنوان مثال، هنگام نمایش پیام های هشدار ایجاد می شود. سینتکس این تابع به صورت زیر است:

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

<Шаблон>- این رشته ای است که باید نمایش های پارامتر را در آن جایگزین کنید.

<Значение1> , ... <Значение10>- اینها پارامترهایی هستند (حداکثر ده) که نمایش آنها باید در رشته جایگزین شود.

برای نشان دادن یک مکان خاص در قالب که می خواهید جایگزینی را در آن انجام دهید، باید از نشانگرهایی مانند %1، ... %10 استفاده کنید. تعداد نشانگرهای درگیر در الگو و تعداد پارامترهای حاوی مقادیر باید مطابقت داشته باشند.

به عنوان مثال، نتیجه اجرای چنین عملگر:

یک خط وجود خواهد داشت:

خطای داده در خط 2 (نوع تاریخ لازم است)

تابعی برای کار با رشته ها StrCompare()

این تابع دو رشته را به روشی غیر حساس به حروف کوچک و بزرگ مقایسه می کند. به عنوان مثال، مانند این:

می توانید همان عمل را زودتر با استفاده از شی انجام دهید مقایسه ارزش ها:

با این حال، استفاده از ویژگی جدید ساده تر به نظر می رسد. و علاوه بر این، یک تابع، در مقابل یک شی مقایسه ارزش ها، هم در تین کلاینت و هم در کلاینت وب کار می کند.

توابع کار با رشته های StrStartsWith()، StrEndsAt()

این توابع تعیین می کنند که آیا یک رشته با یک زیررشته مشخص شروع می شود یا یک رشته با یک زیررشته مشخص به پایان می رسد. پیاده سازی الگوریتم این توابع در یک زبان تعبیه شده دشوار نیست، اما وجود آنها به شما امکان می دهد کدهای تمیزتر و قابل فهم تری بنویسید. و سریعتر کار می کنند.

به عنوان مثال، استفاده از آنها در اپراتور راحت است اگر:

توابع کار با رشته های StrDivide(), StrConnect()

این توابع یک رشته را با استفاده از یک جداکننده مشخص به قطعات تقسیم می کنند. یا برعکس، آنها چندین خط را در یک خط ترکیب می کنند و جداکننده انتخاب شده را بین آنها قرار می دهند. آنها برای ایجاد یا تجزیه و تحلیل لاگ ها و مجلات فناوری مناسب هستند. به عنوان مثال، شما می توانید به راحتی یک ورودی گزارش فناوری را در قسمت هایی که برای تجزیه و تحلیل بیشتر مناسب هستند تجزیه کنید:

تابعی برای کار با رشته ها StrFind()

به جای عملکرد قدیمی پیدا کردن()ما یک تابع جدید را پیاده سازی کرده ایم که دارای قابلیت های اضافی است:

  • جستجو در جهات مختلف (از ابتدا، از انتها)؛
  • جستجو از یک موقعیت مشخص؛
  • جستجوی یک رخداد با یک عدد مشخص (دوم، سوم و غیره).

در واقع، قابلیت های تابع قدیمی را کپی می کند. این کار به منظور حفظ سازگاری با ماژول های کامپایل شده در نسخه های قدیمی انجام می شود. عملکرد قدیمی پیدا کردن()توصیه می شود دیگر استفاده نشود.

در زیر نمونه ای با استفاده از قابلیت های جستجوی جدید آورده شده است. جستجوی معکوس زمانی مفید است که به آخرین قسمت یک رشته رسمی، مانند نام کامل فایل در URL نیاز دارید. و جستجو از یک موقعیت مشخص در مواردی که باید در یک قطعه شناخته شده جستجو کنید و نه در کل خط کمک می کند.

قابلیت های اساسی یک زبان برنامه نویسی معمولاً شامل کار با اعداد و رشته ها می شود. معمولاً این ویژگی ها در کد کامپایلر به صورت سخت کدگذاری می شوند (یا کلاس های "پایه" زبان برنامه نویسی پیاده سازی می شوند).

در 1C، توانایی کار با رشته ها در خود پلتفرم برنامه ریزی شده است. امروز به ویژگی های کار با رشته های 1C در برنامه های زبان داخلی 1C خواهیم پرداخت.

مقدار خط 1C

1. بیایید با ساده ترین شروع کنیم. ایجاد یک متغیر و اختصاص یک مقدار رشته ثابت به آن در 1C به شکل زیر است:

متغیر = "سلام، دنیا!";

اگر باید یک کاراکتر نقل قول را در یک مقدار رشته ثابت 1C مشخص کنید، باید آن را دو برابر کنید ""

متغیر = "سلام، دنیا"!;

2. خط شکست 1C را می توان به دو روش در یک بار مشخص کرد. اولین مورد استفاده از نماد |

متغیر = "سلام،
| دنیا! "؛

مورد دوم استفاده از سیستم شمارش نمادها است. این امکان را به شما می دهد که هم شکست خط 1C و هم سایر کاراکترهای غیرچاپ مانند TAB را اضافه کنید.

متغیر = "سلام" + Symbols.PS + "صلح!";

3. تنظیمات در 1C را می توان نه تنها برای یک زبان (روسی، انگلیسی یا دیگری) - بلکه به طور همزمان برای چندین زبان توسعه داد. در این حالت، زبان مورد استفاده فعلی در پایین پنجره 1C انتخاب می شود.

لیست زبان ها در پنجره پیکربندی در شاخه General/Languages ​​قرار دارد. هر زبان دارای یک شناسه کوتاه مانند ruیا eng.

واضح است که هنگام برنامه ریزی چنین پیکربندی، خطوط 1C نیز می توانند چند زبانه باشند. برای انجام این کار، ایجاد چنین خط 1C با مشخص کردن از طریق امکان پذیر است. گزینه ها بر اساس شناسه زبان:

Variable = "ru=""سلام، دنیا! ""; en=""سلام، دنیا! """;

اگر طبق معمول از خط 1C که به این شکل تشکیل شده است استفاده کنید، همان چیزی است که در آن نوشته شده است. برای اینکه سیستم آن را به دو گزینه تقسیم کند و از گزینه مورد نظر استفاده کند، باید از تابع НStr() استفاده کنید:

//درست برای تنظیمات دو زبانه
گزارش(NStr(متغیر));

لوازم با خط نوع 1C

ویژگی فیلدی در دایرکتوری/سند 1C است. تفاوت آن با یک متغیر در یک برنامه به زبان 1C در این است که برای ویژگی نوع آن دقیقاً مشخص شده است (شماره، رشته 1C و غیره). اگر نیاز دارید که حافظه خود را از چیستی پروپوزال تجدید کنید، درس را تماشا کنید.

اگر نوع ویژگی - خط 1C را مشخص کنید، باید پارامترها را نیز مشخص کنید.

خطوط 1C دارای طول نامحدود (با طول = 0) و طول محدود هستند که تعداد دقیق کاراکترها را نشان می دهد. ردیف‌های 1C با طول نامحدود در یک جدول SQL جداگانه ذخیره می‌شوند، بنابراین استفاده از آنها نسبت به موارد محدود بهره‌وری کمتری دارد.

به همین دلیل است که استفاده از رشته های 1C با طول نامحدود محدودیت های خود را دارد - استفاده از آنها در همه جا امکان پذیر نیست. به عنوان مثال، به عنوان شماره سند، کد مرجع یا اندازه گیری مجاز نیست.

کار با رشته های 1C

چندین عملکرد داخلی پلت فرم 1C برای کار با رشته ها وجود دارد.

  • AbbrLP ("باورنکردنی، اما واقعی!")
    فضاهای اضافی را از خط 1C حذف می کند. همچنین می تواند برای تبدیل هر نوع به رشته 1C (مثلاً اعداد) استفاده شود.
  • متغیر = "Vasya" + AbbrLP(" plus") + "Olya"; // "Vasya plus Olya" وجود خواهد داشت
    مثالی از جمع چند مقدار رشته 1C. نتیجه یک خط 1C خواهد بود.
  • متغیر = Lev("موسیقی"، 2); // "مو" خواهد بود
    متغیر = متوسط ​​("موسیقی"، 2، 2); // "تهدید" وجود خواهد داشت
    متغیر = حقوق ("موسیقی"، 2); // "کا" وجود خواهد داشت
    گزینه های مختلف برای به دست آوردن یک رشته فرعی از یک رشته 1C.
  • متغیر = Find("Music", "zy"); //3 وجود خواهد داشت
    یک زیر رشته را در رشته 1C جستجو کنید که با کاراکتر 1 شروع می شود.
  • متغیر = StrLength ("موسیقی")؛ //6 عدد خواهد بود
    تعداد کاراکترهای خط 1C را برمی‌گرداند.
  • گزارش ("سلام") // در پنجره پیام در پایین پنجره 1C
    هشدار ("سلام") //گفتگوی بازشو
    وضعیت ("سلام") //در خط نمایش وضعیت در پایین سمت چپ
    .

آوردن اشیاء به خط 1C

همانطور که می دانید در حال حاضر محبوب ترین فرمت برای تبادل اطلاعات ساختاریافته XML است. حتی آخرین نسخه MS Office Word و Excel فایل ها را با این فرمت ذخیره می کند (به ترتیب docx و xlsx، پسوند را به zip تغییر دهید، در بایگانی باز کنید).

پلت فرم 1C برای تبادل داده چندین گزینه را ارائه می دهد که اصلی ترین آنها نیز XML است.

1. ساده ترین روش استفاده از تابع ()Abbreviation یا String() است. شما می توانید از تابع ()REPRESENTATION در بدنه درخواست استفاده کنید. نتیجه عمل آنها یکسان است - آنها یک نمایش رشته ای از هر شی 1C را برای کاربر ایجاد می کنند.

برای یک فهرست به طور پیش فرض، این نام آن خواهد بود. برای یک سند - نام سند، شماره و تاریخ.

2. هر شی 1C (با محدودیت) را می توان به XML تبدیل کرد و بالعکس. فرآیند تبدیل سریال سازی نامیده می شود.

StringViewXml = XMLString(Value); //XML را از مقدار 1C دریافت کنید
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); // مقدار 1C را از رشته XML دریافت کنید، باید نوع 1C را که باید دریافت شود مشخص کنید.

3. راه خود پلتفرم 1C برای تبدیل هر شی 1C به رشته وجود دارد. از نسخه 1C 7.7 مهاجرت کرد. این قالب توسط برنامه های دیگر قابل درک نیست، اما 1C های دیگر آن را درک می کنند، که استفاده از آن را برای تبادل بین پایگاه های داده 1C آسان می کند.

ردیف = ValueInRowInt(Value1C); // رشته 1C را از مقدار 1C دریافت کنید
ValueVFile("C:\MyFile.txt"، Value1C); //گزینه دیگر، یک فایل با یک رشته ذخیره شده از مقدار 1C دریافت می کنیم
Value1C = ValueFromStringInt(String); //بازگشت از خط 1C
Value1C = ValueFile("C:\MyFile.txt"); //بازگشت از فایل

ویرایش خطوط 1C در فرم

علاوه بر کار با رشته های 1C در برنامه ای به زبان 1C، البته دوست دارم کاربر بتواند آنها را ویرایش کند. چندین احتمال برای این وجود دارد:

1. ساده ترین راه درخواست ورود خط 1C در صورت تقاضا است. این روش هنگام آموزش برنامه نویسی 1C استفاده می شود؛ در زندگی از آن بسیار کمتر استفاده می شود (اما استفاده می شود!).

متغیر = "";
ردیف = EnterValue (متغیر، "نام کامل را وارد کنید");

2. برای نمایش جزئیات یک شی 1C (دایرکتوری/سند) یا جزئیات فرم (نگاه کنید به)، بیشتر اوقات از یک فیلد ورودی استفاده می شود. این رایج ترین ابزار در 1C برای کاربر برای کار با فیلدهای ویرایش است.

3. قابلیت های فیلد ورودی را می توان گسترش داد (به ویژگی های فیلد ورودی مراجعه کنید، روی آن کلیک راست کنید، جزئیات بیشتر):

  • حالت ویرایش چندخطی چک باکس
  • چک باکس ویرایش پیشرفته (در صورت علامت زدن چک باکس قبلی موجود است)
  • حالت رمز عبور چک باکس (نگاه کنید به).

4. اگر تمام قابلیت های فیلد ورودی برای شما کافی نیست، یک ویرایشگر داخلی وجود دارد. برای اضافه کردن آن به فرم، باید یک فیلد سند متنی را به منوی Form/Insert Control اضافه کنید. در ویژگی های آن می توانید حالت عملکرد آن را مشخص کنید - ویژگی Extension.

یک فیلد سند متنی را نمی توان مستقیماً با داده ها مرتبط کرد. لازم است یک تابع در کنترل کننده رویداد OnOpen() فرم بنویسید (نگاه کنید به):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //here ValueString متنی است که مثلاً از ویژگی دریافت می‌شود

و در کنترل کننده ذخیره - به عنوان مثال، در دکمه ذخیره - یک ذخیره اضافه کنید:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //Valueخط در اینجا مشخصه ای است که در آن مقدار را ذخیره می کنیم

5. در 1C نسخه 8.2.11، در فرم های مدیریت شده، گزینه جدیدی برای نشان دادن یک خط 1C ظاهر شده است - قسمت Formatted Document.


مشابه فیلد یک سند متنی، هنگام باز کردن آن باید آن را تنظیم کنید و هنگام ذخیره آن با استفاده از برنامه، آن را یادداشت کنید.

  • در شی 1C که فرم آن را ایجاد می کنیم (دایرکتوری، سند، پردازش و غیره) - یک ویژگی با نوع Value Storage اضافه کنید
  • در تابع OnReadOnServer() متن را از ویژگی تنظیم می کنیم

    //در اینجا Attribute ویژگی اضافه شده شی 1C است
    //here FormattedDocument نام فیلد روی فرم برای ویرایش است
    &روی سرور

    FormattedDocument = CurrentObject.Attributes.Get();
    پایان رویه

  • در تابع BeforeWritingOnServer() یا با استفاده از دکمه، متن را از فیلد می نویسیم

    &روی سرور
    رویه هنگام ReadingOnServer (CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    پایان رویه

نوع String در همه زبان های برنامه نویسی یافت می شود. ابتدایی است و در 1C توابع زیادی برای کار با آن وجود دارد. در این مقاله روش های مختلف کار با انواع رشته ها در 1C 8.3 و 8.2 را با استفاده از مثال ها به تفصیل بررسی خواهیم کرد.

خط

برای تبدیل یک متغیر از هر نوع به رشته، تابعی به همین نام "String()" وجود دارد. پارامتر ورودی خود متغیر خواهد بود که نمایش رشته ای آن باید بدست آید.

رشته (نادرست) // "نه" را برمی گرداند
String(12345) // "12,345" را برمی گرداند
رشته (تاریخ فعلی()) //"07/21/2017 11:55:36"

این امکان وجود دارد که نه تنها انواع اولیه را به یک رشته تبدیل کنید، بلکه سایر موارد، به عنوان مثال، عناصر دایرکتوری ها و اسناد را نیز تبدیل کنید.

SokrLP، SokrL، SokrP

پارامترهای ورودی این توابع متغیری از نوع رشته هستند. توابع نویسه‌های ناچیز (فضاها، برگشت‌های کالسکه و غیره) را حذف می‌کنند: به ترتیب از سمت چپ و راست، فقط از سمت چپ و فقط از سمت راست.

مخفف (" فاصله ها از دو طرف حذف خواهند شد ") // "فضاها از دو طرف حذف خواهند شد"
مخفف (" فاصله های دو طرف حذف خواهد شد") // "فضاهای سمت چپ حذف خواهند شد"
مخفف ("فضاهای هر دو طرف حذف خواهند شد") // "فضاهای سمت راست حذف خواهند شد"

لئو، راست، متوسط

این توابع به شما امکان می دهند بخشی از یک رشته را برش دهید. تابع "Left()" بخشی از یک رشته را از سمت چپ آن در طول مشخص شده برمی گرداند. تابع "Right()" مشابه است، اما از سمت راست برش می‌دهد. تابع "Avg()" به شما امکان می دهد تعداد کاراکتری که خط از آن انتخاب می شود و طول آن را مشخص کنید.

Lev("متغیر رشته"، 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 ("مدیرعامل") // مقدار بازگشتی - "مدیر عامل"
TREG ("مدیرعامل") // مقدار بازگشتی - "مدیر کل"

PageReplace

این تابع مشابه جایگزینی در ویرایشگرهای متن است. این به شما امکان می دهد یک کاراکتر یا مجموعه ای از کاراکترها را با دیگری در متغیرهای رشته جایگزین کنید.

StrReplace("قرمز، سفید، زرد"، "،"، ";") // "قرمز; سفید؛ رنگ زرد"

StrNumberLines

این تابع به شما امکان می دهد تعداد خطوطی را که با برگرداندن حامل در یک متغیر متنی جدا شده اند، تعیین کنید.

حلقه در مثال زیر از سه دور عبور می کند زیرا تابع LineNumberRow مقدار 3 را برمی گرداند:

برای ind = 1 توسط StrNumber of strings ("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") چرخه
<тело цикла>
چرخه پایان

StrGetString

این تابع با متن چند خطی به همان روش قبلی کار می کند. این به شما امکان می دهد یک رشته خاص را از یک متغیر متنی دریافت کنید.

StrGetString("String1" + Characters.PS + "String2" + Characters.PS + "String3"، 2) // برگرداندن "String2"

Page NumberOccurrences

تابع تعداد وقوع یک کاراکتر یا زیررشته را در رشته جستجو می شمارد.

تابع StrNumberAttachments("a;b;c;d; ", ";") // عدد 4 را برمی گرداند.

نماد و کد نماد

این توابع به شما امکان می دهد یک کاراکتر را با کد آن در رمزگذاری یونیکد به دست آورید و همچنین این کد را توسط خود کاراکتر تعیین کنید.

تابع SymbolCode("A") // عدد 1040 را برمی گرداند
CharacterCode(1040) // تابع "A" را برمی گرداند

وظایف رایج هنگام کار با رشته ها

رشته های به هم پیوسته

برای ترکیب چند رشته (برای انجام الحاق)، کافی است از عملگر جمع استفاده کنید.

"خط 1" + "خط 2" //نتیجه افزودن دو خط "خط 1 خط 2" خواهد بود.

تبدیل نوع

برای تبدیل یک نوع به رشته، به عنوان مثال، پیوند به یک عنصر دایرکتوری، یک عدد و غیره، کافی است از تابع "String()" استفاده کنید. توابعی مانند ScrLP() نیز متغیرها را به یک رشته تبدیل می‌کند، اما بلافاصله با قطع کردن کاراکترهای ناچیز.

String(1000) // "1000" را برمی گرداند

لطفاً توجه داشته باشید که هنگام تبدیل یک عدد به رشته، برنامه به طور خودکار فاصله ای را اضافه می کند که هزار را از هم جدا می کند. برای جلوگیری از این امر، می توانید از ساختارهای زیر استفاده کنید:

StrReplace(String(1000),Characters.NPP,"") // "1000" را برمی گرداند

String(Format(1000,"HG=")) // "1000" را برمی گرداند

نقل قول در یک رشته

اغلب شما باید با نیاز به تعیین علامت نقل قول در یک متغیر رشته مقابله کنید. این می تواند متن درخواست نوشته شده در پیکربندی یا فقط یک متغیر باشد. برای حل این مشکل، فقط باید دو علامت نقل قول قرار دهید.

Header = String ("Horns and Hooves LLC - این ما هستیم!") // "Horns and Hooves LLC - این ما هستیم!"

چند خط، شکست خط

به منظور ایجاد متن چند خطی، فقط خطوط شکسته (Symbols.PS) را به آن اضافه کنید.

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

نحوه حذف فضاها

برای حذف فضاهای سمت راست یا چپ، می‌توانید از تابع ScrAP() (و همچنین ScrL() و ScrP()) استفاده کنید:

StringNoSpaces = مخفف ("حروف بسیار") // تابع مقدار "حروف بسیار" را برمی گرداند.

اگر پس از تبدیل یک عدد به رشته، باید فضاهای بدون شکست را حذف کنید، از ساختار زیر استفاده کنید:

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // "99999" را برمی گرداند

برنامه نویسان همچنین اغلب از ساختار زیر استفاده می کنند که به شما امکان می دهد تمام فضاهای یک متغیر متنی را حذف یا با کاراکتر دیگری جایگزین کنید:

StringNoSpaces = StrReplace("Hello","") // "Hello" را برمی‌گرداند

مقایسه رشته ها با یکدیگر

می توانید اصطلاحات را با علامت مساوی معمولی مقایسه کنید. مقایسه به حروف کوچک و بزرگ حساس است.

"Hello" = "Hello" // False را برمی‌گرداند
"Hello" = "Hello" // True را برمی گرداند
"Hello" = "Goodbye" // False را برمی گرداند

در نسخه 8.3.6.1977 پیاده سازی شده است.

ما مجموعه ای از توابع طراحی شده برای کار با رشته ها را گسترش داده ایم. ما این کار را انجام دادیم تا ابزارهای پیشرفته تری برای تجزیه داده های رشته در اختیار شما قرار دهیم. توابع جدید در وظایف فناورانه تحلیل متن راحت و مفید خواهند بود. در کارهای مربوط به تجزیه متنی که حاوی داده ها به صورت فرمت شده است. این می تواند تجزیه و تحلیل برخی از فایل های دریافت شده از تجهیزات، یا، به عنوان مثال، تجزیه و تحلیل یک گزارش فناوری باشد.

شما می توانید تمام اقداماتی را که قبلاً عملکردهای جدیدی را انجام می دهند انجام دهید. استفاده از الگوریتم های کم و بیش پیچیده که به زبان داخلی نوشته شده اند. بنابراین، توابع جدید اساساً قابلیت جدیدی به شما نمی دهند. با این حال، آنها به شما این امکان را می دهند که مقدار کد را کاهش دهید و کد را ساده تر و قابل درک تر کنید. علاوه بر این، آنها به شما اجازه می دهند تا اجرای اقدامات را سرعت بخشید. از آنجا که توابع پیاده‌سازی شده در پلتفرم، البته سریع‌تر از الگوریتم مشابهی که در یک زبان داخلی نوشته شده است، کار می‌کنند.

قالب بندی تابع StrTemplate()

این تابع پارامترها را در یک رشته جایگزین می کند. نیاز به چنین تبدیلی اغلب، به عنوان مثال، هنگام نمایش پیام های هشدار ایجاد می شود. سینتکس این تابع به صورت زیر است:

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

<Шаблон>- این رشته ای است که باید نمایش های پارامتر را در آن جایگزین کنید.

<Значение1> , ... <Значение10>- اینها پارامترهایی هستند (حداکثر ده) که نمایش آنها باید در رشته جایگزین شود.

برای نشان دادن یک مکان خاص در قالب که می خواهید جایگزینی را در آن انجام دهید، باید از نشانگرهایی مانند %1، ... %10 استفاده کنید. تعداد نشانگرهای درگیر در الگو و تعداد پارامترهای حاوی مقادیر باید مطابقت داشته باشند.

به عنوان مثال، نتیجه اجرای چنین عملگر:

یک خط وجود خواهد داشت:

خطای داده در خط 2 (نوع تاریخ لازم است)

تابعی برای کار با رشته ها StrCompare()

این تابع دو رشته را به روشی غیر حساس به حروف کوچک و بزرگ مقایسه می کند. به عنوان مثال، مانند این:

می توانید همان عمل را قبلاً با استفاده از شیء مقایسه ارزش انجام دهید:

با این حال، استفاده از ویژگی جدید ساده تر به نظر می رسد. و علاوه بر این، تابع، برخلاف شیء مقایسه ارزش، هم در تین کلاینت و هم در کلاینت وب کار می کند.

توابع کار با رشته های StrStartsWith()، StrEndsAt()

این توابع تعیین می کنند که آیا یک رشته با یک زیررشته مشخص شروع می شود یا یک رشته با یک زیررشته مشخص به پایان می رسد. پیاده سازی الگوریتم این توابع در یک زبان تعبیه شده دشوار نیست، اما وجود آنها به شما امکان می دهد کدهای تمیزتر و قابل فهم تری بنویسید. و سریعتر کار می کنند.

به عنوان مثال، استفاده از آنها در دستور If راحت است:

توابع کار با رشته های StrDivide(), StrConnect()

این توابع یک رشته را با استفاده از یک جداکننده مشخص به قطعات تقسیم می کنند. یا برعکس، آنها چندین خط را در یک خط ترکیب می کنند و جداکننده انتخاب شده را بین آنها قرار می دهند. آنها برای ایجاد یا تجزیه و تحلیل لاگ ها و مجلات فناوری مناسب هستند. به عنوان مثال، شما می توانید به راحتی یک ورودی گزارش فناوری را در قسمت هایی که برای تجزیه و تحلیل بیشتر مناسب هستند تجزیه کنید:

تابعی برای کار با رشته ها StrFind()

به جای تابع Find() قدیمی، یک تابع جدید پیاده سازی کرده ایم که دارای قابلیت های اضافی است:

  • جستجو در جهات مختلف (از ابتدا، از انتها)؛
  • جستجو از یک موقعیت مشخص؛
  • جستجوی یک رخداد با یک عدد مشخص (دوم، سوم و غیره).

در واقع، قابلیت های تابع قدیمی را کپی می کند. این کار به منظور حفظ سازگاری با ماژول های کامپایل شده در نسخه های قدیمی انجام می شود. توصیه می شود دیگر از تابع Find() قدیمی استفاده نکنید.

در زیر نمونه ای با استفاده از قابلیت های جستجوی جدید آورده شده است. جستجوی معکوس زمانی مفید است که به آخرین قسمت یک رشته رسمی، مانند نام کامل فایل در URL نیاز دارید. و جستجو از یک موقعیت مشخص در مواردی که باید در یک قطعه شناخته شده جستجو کنید و نه در کل خط کمک می کند.



 


خواندن:



مینی تست برای تفکر فنی

مینی تست برای تفکر فنی

تشخیص جامع توانایی های عمومی نوجوانان در چارچوب آموزش تخصصی بخش سوم 3. تشخیص حوزه شناختی 3.3. تست...

ارسال آگهی فروش آپارتمان و خانه و سایر املاک به صورت رایگان ارسال آگهی فروش سریع خانه

ارسال آگهی فروش آپارتمان و خانه و سایر املاک به صورت رایگان ارسال آگهی فروش سریع خانه

فروش خانه یک فرآیند پیچیده است که نیاز به در نظر گرفتن تعدادی از تفاوت های ظریف دارد. برای تسریع روند، کارشناسان توصیه می کنند به متخصصان مراجعه کنید. با این حال...

کسب درآمد از خواندن نامه خواندن نامه اما پاداش برای

کسب درآمد از خواندن نامه خواندن نامه اما پاداش برای

ساده ترین راه برای کسب درآمد از اینترنت، جایی که می توانید شروع به کار کنید، کسب درآمد از طریق خواندن نامه های تبلیغاتی است که توسط تبلیغ کنندگان برای شما ارسال می شود...

مطالب با موضوع: برنامه کنسرت "با تمام قلبم" برنامه تلویزیونی با تمام وجود تمام قسمت ها

مطالب با موضوع: برنامه کنسرت

به طور کلی، این برنامه در مورد سرنوشت غیرقابل پیش بینی و پیچیده مردم شوروی صحبت می کرد. بیشتر بینندگان نتوانستند جلوی اشک های خود را بگیرند وقتی که...

فید-تصویر RSS