• توابع رشته Vba اکسل. نمونه هایی از استفاده از توابع VBA. عملیات رشته

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

    1) تابع تعیین طول یک رشته LENGTH (رشته)، تعداد کاراکترهای یک رشته، از جمله فاصله های انتهایی را برمی گرداند.

    SELECT LENGTH('string') FROM DUAL مقدار 7 را برمی گرداند.

    2) توابع برای تبدیل رجیسترهای کاراکتر UPPER (رشته)، LOWER (رشته)، INITCAP (رشته). تابع UPPER() برای تبدیل کاراکترها به حروف بزرگ استفاده می شود.

    SELECT UPPER('string') FROM DUAL STRING را برمی گرداند.

    در صورت لزوم تبدیل کاراکترهای یک رشته به حروف کوچک، از تابع LOWER() استفاده می شود.

    SELECT LOWER('STring') FROM DUAL رشته را برمی گرداند.

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

    SELECT INITCAP('string1 string2') FROM DUAL رشته String1 String2 را برمی گرداند.

    3) عملکردهایی برای کوتاه کردن فضاهای پیشرو و انتهایی LTRIM (رشته)، RTRIM (رشته)، TRIM (رشته). بر این اساس، تابع اول تمام فضاهای اولیه رشته، تابع دوم تمام فضاهای انتهایی و تابع سوم تمام فضاهای اولیه و انتهایی را برش می دهد.

    SELECT LTRIM('str1') FROM DUAL رشته str1 را برمی گرداند،
    SELECT RTRIM('str2') FROM DUAL رشته str2 را برمی گرداند،
    SELECT TRIM(‘str3’) FROM DUAL رشته str3 را برمی گرداند.

    4) تابع جایگزینی بخشی از یک رشته با رشته دیگری REPLACE (رشته_اصلی، رشته فرعی جایگزین شود، رشته فرعی جایگزین شود). برای وضوح بیشتر، یک مثال را در نظر بگیرید، یک عدد در قسمتی از متن جدول ذخیره می شود. علاوه بر این، کاراکتر جداکننده بین قسمت های عدد صحیح و کسری در برخی از فیلدها "." است و برای پردازش بیشتر داده ها باید در همه فیلدها """ باشد. برای این کار از تابع REPLACE به صورت زیر استفاده می کنیم. REPLACE(field1, '.', ',') و همه "." در قسمت فیلد با نماد "،" جایگزین می شود.

    SELECT REPLACE('My_string','_','@') FROM DUAL یک رشته را برمی گرداند [ایمیل محافظت شده].

    5) توابع برای تبدیل داده ها به انواع داده های دیگر. TO_CHAR (عدد) یک عدد را به متن تبدیل می کند. TO_NUMBER (رشته) متن را به عدد تبدیل می کند. TO_DATE (رشته، فرمت تاریخ) یک رشته را به تاریخ با فرمت مشخص شده تبدیل می کند.

    SELECT TO_CHAR(123) FROM DUAL ردیف 123 را برمی گرداند،
    SELECT TO_NUMBER('12345') FROM DUAL شماره 12345 را برمی گرداند،
    SELECT TO_DATE('01.01.2010','dd.mon.yyyy') FROM DUAL تاریخ 01.JAN.2010 را برمی گرداند.

    6) تابع برای تعیین وقوع یک زیر رشته در یک رشته INSTR (رشته_منبع، رشته فرعی، شماره_کاراکتر). این تابع به شما امکان می دهد تا شماره کاراکتر را در رشته منبعی که زیررشته جستجو شده از آن شروع می شود (در صورت وجود) تعیین کنید. در غیر این صورت، 0 برگردانده می شود، به عنوان مثال، ما باید تمام موقعیت های جدول Table1 را تعیین کنیم، که در نام آن زیر رشته "manager" وجود دارد. عملگر زیر برای این کار کاملا مناسب است.

    SELECT * از TABLE1 WHERE INSTR(POST، 'مدیر'، 1) > 0.

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

    SELECT INSTR('Small string', 'string', 1) FROM DUAL مقدار 7 را برمی گرداند.
    SELECT INSTR('Small string', 'String', 1) FROM DUAL مقدار 0 را برمی گرداند.

    7) تابع استخراج زیر رشته SUBSTR (رشته_منبع، تعداد_نماد_اولیه، تعداد_کاراکترها) در رشته منبع. بیایید چنین مثالی را در نظر بگیریم، در جدول کاربر آدرس به شکل نام شهرک، نام خیابان، شماره خانه ذخیره می شود. علاوه بر این، ما با اطمینان می دانیم که به طور دقیق 20 کاراکتر برای نام شهرک اختصاص داده شده است (اگر نام شهرک کمتر از 20 کاراکتر باشد، بقیه با فاصله پر شده است)، برای نام خیابان 30 کاراکتر، برای کاراکتر خانه شماره 3 در مرحله بعد، باید تمام آدرس ها را از جدول خود به دیگری منتقل کنیم و در عین حال هر 3 جزء آدرس باید در فیلدهای مختلف باشند. برای استخراج اجزای آدرس، از تابع ()SUBSTR استفاده می کنیم.

    SELECT SUBSTR(TABLE_1.ADDRESS, 1, 20) CITY, SUBSTR(TABLE_1.ADDRESS, 21, 30) STREET, SUBSTR(TABLE_1.ADDRESS, 52, 3) TOWN FROM TABLE_1

    البته برای انتقال داده ها باید از دستور INSERT استفاده کنید اما مثال در نظر گرفته شده برای درک عملکرد تابع SUBSTR کاملا مناسب است.
    SELECT SUBSTR('My_string', 4, 3) FROM DUAL رشته رشته را برمی گرداند.

    توابع مورد بحث در بالا را می توان در پارامترهای ورودی استفاده کرد. بنابراین اگر لازم باشد همه کاراکترها را بعد از یک کاراکتر مشخص انتخاب کنیم، می توان تعداد کاراکتر مورد نظر را از تابع INSTR به تابع SUBSTR منتقل کرد. به عنوان مثال، اگر شما نیاز به انتقال تمام کاراکترهای فیلد جدول دارید که بعد از "" قرار دارند، می توانید از این ساختار استفاده کنید.
    SUBSTR(رشته_من، INSTR(رشته_من، '،'، 1)، LENGTH(رشته_من)- INSTR(رشته_من، '،'، 1)+1) FROM DUAL.
    برای تعیین کاراکتر شروع، تابع INSTR() را فراخوانی می‌کنیم که شماره کاراکتر اولین وقوع زیررشته‌ها "،" را برمی‌گرداند. در مرحله بعد، تعداد کاراکترهای انتهای رشته را به عنوان تفاوت بین طول رشته و تعداد اولین وقوع رشته فرعی تعریف می کنیم.

    8) برای تعیین کد کاراکتر از تابع ASCII(string) استفاده می شود که کد 1 کاراکتر رشته را برمی گرداند. مثلا

    SELECT ASCII(W) FROM DUAL مقدار 87 را برمی گرداند.

    9) تابع معکوس برای تبدیل کد کاراکتر به کاراکتر CHR (عدد).

    SELECT CHR(87) FROM DUAL کاراکتر W را برمی گرداند.

    توابع کار با اعداد در اوراکل.

    اوراکل تعدادی توابع برای کار با اعداد دارد. اینها شامل توابع افزایش یک عدد به توان POWER()، گرد کردن ROUND() و غیره است.

    1) تابع ABS(number) مقدار مطلق آرگومان را برمی گرداند.
    SELECT ABS(-3) FROM DUAL مقدار 3 را برمی گرداند.

    2) تابع CEIL(number) کوچکترین عدد صحیح بزرگتر یا مساوی با پارامتر ارسال شده را برمی گرداند.
    SELECT CEIL(4.5) FROM DUAL مقدار 5 را برمی گرداند.

    3) تابع FLOOR(number) بزرگترین عدد صحیح کمتر یا مساوی با پارامتر ارسال شده را برمی گرداند.
    SELECT FLOOR(3.8) FROM DUAL مقدار 3 را برمی گرداند.

    4) تابع MOD(number_1, number_2) باقیمانده تقسیم پارامتر اول بر پارامتر دوم را برمی گرداند.
    SELECT MOD(5, 3) FROM DUAL 2 برمی گردد. توجه داشته باشید. اگر پارامتر دوم 0 باشد، تابع اولین پارامتر را برمی گرداند.

    5) تابع گرد کردن ROUND (شماره_1، شماره_2). آرگومان اول را به تعداد ارقام ارسال شده در آرگومان دوم گرد می کند. اگر پارامتر دوم مشخص نشده باشد، برابر با 0 در نظر گرفته می شود، یعنی گرد کردن به یک مقدار صحیح انجام می شود. مثال ها
    SELECT ROUND(101.34) FROM DUAL مقدار 101 را برمی گرداند،
    SELECT ROUND(100.1268, 2) FROM DUAL 100.13 را برمی گرداند
    SELECT ROUND(1234000.3254, -2) FROM DUAL 1234000 را برمی گرداند،
    SELECT ROUND(-100.122، 2) FROM DUAL -100.12 برمی گردد.

    6) تابع برش مقدار TRUNC (شماره_1، شماره_2). مقدار اولین پارامتر کوتاه شده را به تعداد ارقام اعشاری مشخص شده در پارامتر دوم برمی گرداند. مثال ها
    SELECT TRUNC(150.58) FROM DUAL مقدار 150 را برمی گرداند
    SELECT TRUNC(235.4587, 2) FROM DUAL 235.45 را برمی گرداند
    SELECT TRUNC(101.23, -1) FROM DUAL مقدار 100 را برمی گرداند.

    7) Oracle DBMS دارای تعدادی توابع مثلثاتی SIN(عدد)، COS(عدد)، TAN(عدد) و معکوس آنها ACOS(عدد)، ASIN(عدد)، ATAN(عدد) است. آنها مقدار تابع مثلثاتی مربوط به نام را برمی گردانند. برای توابع مستقیم، پارامتر مقدار زاویه بر حسب رادیان و برای توابع معکوس، مقدار تابع است. مثال ها
    SELECT COS(0.5) FROM DUAL مقدار 0.877582561890373 را برمی گرداند.
    SELECT SIN(0.5) FROM DUAL مقدار 0.479425538604203 را برمی گرداند.
    SELECT TAN(0.5) FROM DUAL مقدار 0.546302489843791 را برمی گرداند.
    SELECT ACOS(0.5) FROM DUAL مقدار 1.0471975511966 را برمی گرداند.
    SELECT ASIN(0.5) FROM DUAL 0.523598775598299 را برمی گرداند.
    SELECT ATAN(0.5) FROM DUAL مقدار 0.463647609000806 را برمی گرداند.

    8) توابع هذلولی. SINH (شماره)،
    COSH (تعداد)، TANH (تعداد). SINH() سینوس هذلولی پارامتر تصویب شده، COSH() کسینوس هذلولی پارامتر تصویب شده، TANH() مماس هذلولی پارامتر ارسال شده را برمی گرداند. مثال ها
    SELECT COSH(0.5) FROM DUAL مقدار 1.12762596520638 را برمی گرداند.
    SELECT SINH(0.5) FROM DUAL مقدار 0.521095305493747 SELECT TANH(0.5) FROM DUAL مقدار 0.46211715726001 را برمی گرداند.

    9) تابع توان POWER (شماره_1، عدد_2). مثال ها
    SELECT POWER(10, 2) FROM DUAL 100 را برمی گرداند
    SELECT POWER(100, -2) FROM DUAL مقدار 0.0001 را برمی گرداند.

    10) توابع لگاریتمی. LN(number) لگاریتم طبیعی پارامتر تصویب شده را برمی گرداند، LOG(number_1, number_2) لگاریتم دومین پارامتر ارسال شده را به پایه داده شده به پارامتر اول برمی گرداند. علاوه بر این، پارامتر اول باید بزرگتر از صفر باشد و برابر با 1 نباشد. مثالها
    SELECT LN(5) FROM DUAL مقدار 1.6094379124341 را برمی گرداند.
    SELECT LOG(10, 3) FROM DUAL مقدار 0.477121254719662 را برمی گرداند.

    11) تابع استخراج ریشه دوم SQRT (عدد). مثال
    SELECT SQRT(4) FROM DUAL مقدار 2 را برمی گرداند.

    12) تابع افزایش عدد e به توان EXP (عدد). مثال
    SELECT EXP(2) FROM DUAL 7.38905609893065 را برمی گرداند.

    توابع تاریخ در اوراکل

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

    1) ADD_MONTHS(date, number_of_months) تاریخی را برمی گرداند که از تاریخ گذرانده شده در پارامتر اول با تعداد ماه های مشخص شده در پارامتر دوم جدا شده است. مثال ها
    SELECT ADD_MONTHS('01-JAN-2010', 2) FROM DUAL تاریخ '03/01/2010' را برمی گرداند
    SELECT ADD_MONTHS('01-JAN-2010', -3) FROM DUAL تاریخ '10/01/2009' را برمی گرداند
    SELECT ADD_MONTHS('30-JAN-2010', 1) FROM DUAL تاریخ '28.02.2010' را برمی گرداند

    2) تابع SYSDATE برای تعیین تاریخ و زمان فعلی استفاده می شود. دامنه این عملکرد بسیار گسترده تر از آن چیزی است که در نگاه اول به نظر می رسد. اول از همه، کنترل بر ورود داده ها به پایگاه داده است. در بسیاری از جداول، یک فیلد جداگانه برای ذخیره تاریخ آخرین اصلاح اختصاص داده شده است. همچنین کنترل برخی پارامترهای ورودی برای گزارش ها بسیار راحت است، به خصوص اگر آنها نباید بزرگتر از تاریخ فعلی باشند. این تابع علاوه بر تاریخ، زمان را نیز به نزدیکترین ثانیه برمی گرداند. مثال
    SELECT SYSDATE FROM DUAL تاریخ را برمی گرداند '22.05.2010 14:51:20'

    3) اگر باید آخرین روز ماه را تعیین کنید، تابع LAST_DAY (تاریخ) برای این کار کاملاً مناسب است. می توان از آن برای تعیین تعداد روزهای باقی مانده در یک ماه استفاده کرد.
    LAST_DAY (SYSDATE) را انتخاب کنید - SYSDATE FROM DUAL.
    در نتیجه اجرای این دستور تعداد روزهای از تاریخ جاری تا پایان ماه نمایش داده می شود. مثال
    SELECT LAST_DAY('15-FEB-2010') FROM DUAL تاریخ '28.02.2010' را برمی گرداند.

    4) تابعی برای تعیین تعداد ماه‌های بین تاریخ‌های MONTHS_BETWEEN (تاریخ_1، تاریخ_2). مثال ها
    SELECT MONTHS_BETWEEN('01-JUL-2009', '01-JAN-2010') FROM DUAL -6 برمی گردد
    SELECT MONTHS_BETWEEN('01-JUL-2009', '10-JAN-2010') FROM DUAL -6.29032258064516 برمی گردد.
    توجه داشته باشید. اگر روزهای ماه ها یکسان باشد، تابع یک عدد صحیح برمی گرداند، در غیر این صورت نتیجه یک کسری و تعداد روزهای ماه 31 خواهد بود.

    5) تابع NEXT_DAY (تاریخ، روز هفته) به شما امکان می دهد تاریخ بعدی را از تاریخ گذشت در پارامتر اول تعیین کنید، که مطابق با روز هفته سپری شده در پارامتر دوم است. مثال
    SELECT NEXT_DAY('01-JUL-2009', 'mon') FROM DUAL تاریخ '07/06/2009' را برمی گرداند، یعنی دوشنبه بعدی پس از 1 ژوئیه 2009، ششم است.

    6) گرد کردن تاریخ ROUND (تاریخ، قالب). پارامتر دوم اختیاری است، اگر مشخص نشده باشد، به عنوان "DD" در نظر گرفته می شود، یعنی گرد کردن به نزدیکترین روز انجام می شود. مثال ها
    SELECT ROUND(SYSDATE) FROM DUAL تاریخ "5/23/2010" را برمی گرداند
    SELECT ROUND(SYSDATE، MONTH) FROM DUAL تاریخ «06/01/2010» را برمی گرداند که به نزدیکترین روز اول ماه گرد شده است.

    7) قطع تاریخ. تابع TRUNC (تاریخ، قالب). همانطور که در بالا بحث شد، ممکن است پارامتر دوم نداشته باشد. در این صورت برش تا روز بعد انجام می شود. مثال ها
    SELECT TRUNC(SYSDATE) FROM DUAL تاریخ "5/22/2010" را برمی گرداند
    SELECT TRUNC(SYSDATE، 'WW') FROM DUAL تاریخ '5/1/2010' را برمی گرداند
    SELECT TRUNC(SYSDATE، 'Day') FROM DUAL تاریخ '5/16/2010' را برمی گرداند.

    توابع تبدیل داده در اوراکل

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

    1) TO_CHAR (داده ها، قالب). در نگاه اول، سینتکس بسیار ساده است، اما با توجه به پارامتر دوم، می‌توانید با دقت زیادی توضیح دهید که داده‌ها را به چه فرمتی تبدیل کنید. بنابراین، هم تاریخ و هم مقدار عددی را می توان به رشته تبدیل کرد. گزینه تبدیل تاریخ به رشته را در نظر بگیرید. مقادیر رایج ترین فرمت ها در جدول آورده شده است، اطلاعات دقیق تر در اسناد فنی موجود است.

    جدول مقادیر قالب برای تبدیل عدد به رشته.

    SELECT TO_CHAR (SYSDATE، 'D-MONTH-YY') FROM DUAL رشته '7-MAY -10' را برمی گرداند.
    SELECT TO_CHAR (SYSDATE، 'DDD-MM-YYYY') FROM DUAL رشته '142-05-2010' را برمی گرداند
    SELECT TO_CHAR (SYSDATE، 'Q-D-MM-YYY') FROM DUAL رشته '2-7-05-010' را برمی گرداند.
    SELECT TO_CHAR(1050, '9.99EEEE) FROM DUAL رشته ' 1.050E+03' را برمی گرداند
    SELECT TO_CHAR(1400, '9999V999') FROM DUAL رشته '1400000' را برمی گرداند.
    SELECT TO_CHAR(48، 'RM') FROM DUAL رشته 'XLVIII' را برمی گرداند

    2) تابع تبدیل یک رشته به تاریخ TO_DATE (رشته، قالب). مقادیر قالب ممکن قبلاً در بالا مورد بحث قرار گرفته است، بنابراین من چند نمونه از استفاده از این تابع را ارائه خواهم کرد. مثال ها
    SELECT TO_DATE('01/01/2010', 'DD.MM.YYYY') FROM DUAL تاریخ '01/01/2010' را برمی گرداند
    SELECT TO_DATE('01.JAN.2010', 'DD.MON.YYYY') FROM DUAL تاریخ "01.01.2009" را برمی گرداند
    SELECT TO_DATE('15-01-10', 'DD-MM-YY') FROM DUAL تاریخ '1/15/2010' را برمی گرداند.

    3) تابع تبدیل رشته به مقدار عددی TO_NUMBER (رشته، قالب). رایج ترین مقادیر فرمت در جدول ذکر شده است، بنابراین بیایید استفاده از این تابع را با استفاده از مثال در نظر بگیریم. مثال ها
    SELECT TO_NUMBER('100') FROM DUAL عدد 100 را برمی گرداند
    SELECT TO_NUMBER('0010.01', '9999D99') FROM DUAL عدد 10.01 را برمی گرداند.
    SELECT TO_NUMBER("500000","999G999") FROM DUAL عدد 500000 را برمی گرداند.

    (http://www.cyberforum.ru/vba/thread638743.html)

    انتخاب 1

    strW= (="KOROTEEV DMITRY") strB=Replace(Replace(strW، Chr(61)، "")، Chr(34)، "")

    گزینه

    همچنین می توانید از آرایه بایت استفاده کنید:

    Sub n() Dim Mass() به عنوان بایت، n به عنوان طولانی، Zam به عنوان رشته، TXT به عنوان رشته TXT = "=""DMITRY KOROTEEV" Mass = StrConv(TXT، vbFromUnicode) برای n = 0 به UBound(Mass) اگر جرم باشد (ن)<>34 و Mass(n)<>61 سپس Zam = Zam + Chr$(Mass(n)) MsgBox بعدی Zam End Sub

    گزینه

    یا فیلتر میانی:

    Sub nn() Dim n به مدت، TXT به عنوان رشته، L به عنوان رشته، Zam به عنوان رشته TXT = "=""DMITRY KOROTEEV" برای n = 1 To Len(TXT) L = Mid$(TXT, n, 1) اگر L<>"""" و من<>"=" سپس Zam = Zam + L MsgBox بعدی Zam End Sub

    خط 6 را می توان با یک لایک جایگزین کرد:
    کد ویژوال بیسیک
    1
    اگر L مانند "[!""=]" سپس Zam = Zam + L

    گزینه

    هنوز از طریق جستجوی موقعیت و بازگشت:

    Sub test() Dim n به مدت، txt به عنوان رشته txt = "=""DMITRY KOROTEEV" txt = Change(txt, "=") txt = Change(txt, """") MsgBox txt پایان تابع فرعی تغییر( txt به عنوان رشته، What As String، اختیاری Pos = 1) Dim n به عنوان طولانی اگر Pos<>0 سپس n = InStr(Pos, txt, What) Change = Mid$(txt, Pos, IIf(n - Pos< 0, Len(txt), n - Pos)) + Change(txt, What, IIf(n = 0, 0, n + 1)) End If End Function

    شما همچنین می توانید از عبارات منظم استفاده کنید، اما من آنها را نمی دانم.

    گزینه

    از طریق جستجو و بازگشت از راست به چپ:

    کد ویژوال بیسیک
    1 2 3 4 5 6 7 8 تغییر تابع (txt به عنوان رشته، چه به عنوان رشته، یک پوز اختیاری به مدت طولانی) کم نور n به عنوان طولانی اگر Pos = 0 سپس Pos = Len(txt) اگر Pos<>-1 سپس n = InStrRev(txt، What، Pos) Change = Change(txt، What، IIf(n = 1، -1، n - 1)) + Mid$(txt، n + 1، Pos - n) پایان اگر تابع پایان

    گزینه

    و وجود دارد شکافو پیوستن

    Strb = Join(Split(Join(Split(strW, "=")، "")، """")، "")

    خارج از موضوع:اما این برای سادیست ها است

    حروف بزرگ و کوچک

    با ActiveDocument.Range "uppercase.Text = Ucase(.Text) "downcase.Text = Lcase(.Text) پایان با

    یا StrConv() - تبدیل یک رشته (به و از یونیکد، به حروف بزرگ و کوچک، حروف اول کلمات و غیره) - به زیر مراجعه کنید

    عملیات رشته

    برای داده های نوع String، تنها یک عملیات وجود دارد - الحاق (اتحاد). به عنوان مثال، نتیجه عملیات الحاق سه مقدار رشته "پیتر" و "" و "ایوانوویچ" رشته "پیتر ایوانوویچ" خواهد بود. همچنین می توان از عملگر دیگری برای عملیات الحاق استفاده کرد، به عنوان مثال: "ده" + "هزارم". تفاوت بین این عبارات این است که در حالت اول، عملوندها می توانند مقادیری از هر نوع باشند (به سادگی به رشته تبدیل می شوند) و در حالت دوم، هر دو عملوند باید از نوع String باشند. تعداد زیادی توابع برای کار با رشته ها (جدول. توابع کار با رشته ها) وجود دارد.

    جدول "توابع کار با رشته ها"

    تابع شرح مثال
    لن (خ) طول یک رشته را مشخص می کند از a=len ("شخصیت ها") a=9 را دنبال می کند
    ترک کرد (<строка>, <длина>) استخراج از استدلال<строка>تعداد مشخص شده کاراکتر در سمت چپ Left(" 1234string", 4) = "1234"
    درست(<строка>, <длина>) استخراج از استدلال<строка>تعداد کاراکترهای مشخص شده در سمت راست Right(" 1234string", 6) "string"
    اواسط(<строка>, <старт> [, <длина>]) استخراج از استدلال<строка>رشته فرعی با تعداد مشخص شده کاراکتر، از موقعیت شروع می شود<старт> Mid("12345678"، 4.3) "456"
    اواسط(<строка>, <старт>) رشته فرعی را از موقعیت انتخاب کنید<старт>تا آخر خط Mid("12345678"، 4) "45678"
    LTrim (<строка>) فاصله های ابتدای رشته را حذف می کند LTrim("print") "چاپ"
    RTrim(<строка>) فاصله های انتهای رشته را حذف می کند RTrim("print") "چاپ"
    کوتاه کردن (<строка>) فاصله ها را از ابتدا و انتهای یک رشته حذف می کند برش ("چاپ") "چاپ"
    InStr([<старт>, ] < строка1>, <строка2> [, <сравнение>]) یک زیر رشته را در یک رشته جستجو می کند. موقعیت اولین رخداد یک رشته را برمی گرداند<строка2>به یک رشته<строка1>, <старт>- موقعیتی که جستجو از آن شروع می شود. اگر این آرگومان حذف شود، جستجو از ابتدای رشته شروع می شود Instr("C:Temp test.mdb", "Test")=9 اگر رشته جستجو در رشته مشخص شده نباشد، تابع 0 را برمی گرداند.
    InStrRev([<старт>, ] <строка1>, <строка2> [, <сравнение>]) یک زیر رشته را در یک رشته جستجو می کند، اما از انتهای رشته شروع می شود و موقعیت آخرین وقوع رشته فرعی را برمی گرداند. استدلال اختیاری<сравнение>نوع مقایسه بین دو رشته را مشخص می کند
    جایگزین کردن(<строка>, <строкаПоиск>, <строкаЗамена>) به شما امکان می دهد یک رشته فرعی را با رشته دیگری در یک رشته جایگزین کنید. این تابع تمام رخدادهای آرگومان را جستجو می کند<строкаПоиск>در استدلال<строка>و جایگزین آنها می شود<строкаЗамена>

    برای مقایسه مقادیر رشته، می توانید از عملگرهای مقایسه عددی معمول استفاده کنید، زیرا هنگام مقایسه کاراکترها، کدهای باینری آنها مقایسه می شوند. برای مقایسه مقادیر رشته، از عملگر Like نیز استفاده می شود که به شما امکان می دهد تطابق نادرست را تشخیص دهید، به عنوان مثال، عبارت "Input signal" مانند "Input *" True خواهد بود، زیرا رشته مقایسه شده با کلمه "Input" شروع می شود. . کاراکتر ستاره (*) در یک رشته جایگزین تعداد دلخواه کاراکتر می شود. کاراکترهای دیگری که توسط عملگر Like در رشته مقایسه شده پردازش می شوند:

    • ? - هر شخصیت (یک)؛
    • # - یک رقمی (0-9)؛
    • [<список>] – کاراکتری که با یکی از کاراکترهای لیست مطابقت دارد.
    • [!<список>] کاراکتری است که با هیچ یک از کاراکترهای لیست مطابقت ندارد.
    • ASC() - این تابع به شما امکان می دهد کد عددی کاراکتر ارسال شده را برگردانید. به عنوان مثال، ASC("D") 68 را برمی گرداند. این تابع برای تعیین حرف بعدی یا قبلی مفید است. معمولاً همراه با تابع استفاده می شود Chr() که عملیات معکوس را انجام می دهد - یک کاراکتر را با توجه به کد عددی آن برمی گرداند. انواع این تابع - AscB() و AscW():
      • AscB() - فقط اولین بایت از کد عددی کاراکتر را برمی گرداند.
      • AscW() - کد یک کاراکتر یونیکد را برمی گرداند
    • Chr() - یک کاراکتر را با کد عددی آن برمی گرداند. می تواند همراه با تابع Asc () استفاده شود، اما اغلب زمانی استفاده می شود که شما نیاز به خروجی یک کاراکتر سرویس دارید. (به عنوان مثال نقل قول - ")، زیرا نقل قول ها فقط در کد VBA وارد نمی شوند (شما باید دو برابر کنید). من معمولا از این ویژگی استفاده می کنم.

      شمشیر کم نور به عنوان شمشیر رشته = Chr(34) و "واژه نقل قول" و Chr(34)

      انواع مختلفی از این تابع وجود دارد - ChrB() و ChrW(). آنها مشابه گزینه های مشابه برای عملکرد کار می کنند Asc().

    • InStr() و InStrRev() یکی از محبوب ترین ویژگی ها است. به شما امکان می دهد یک کاراکتر یا دنباله ای از کاراکترها را در بدنه یک متغیر رشته پیدا کنید و موقعیت آنها را برگردانید. اگر دنباله پیدا نشد، 0 برگردانده می شود.

      Dim sStr As String sStr = "w" اگر InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 سپس MsgBox "کلمه جستجو وجود دارد!" MsgBox دیگر "کلمه جستجو گم شده است!" پایان اگر

      تفاوت بین توابع این است که InStr() کلمه مشخص شده را از ابتدای رشته جستجو می کند و InStrRev() از انتهای رشته جستجو می کند.

    • ترک کرد() , درست() , اواسط() - توانایی گرفتن تعداد کاراکترهایی که از یک متغیر رشته موجود در سمت چپ، راست یا وسط تعیین می کنید.

      Dim sStr As String sStr = "سلام، دنیا!" MsgBoxMid(sStr, 1, 5)

    • لن() - امکان به دست آوردن تعداد کاراکترهای یک رشته. اغلب با حلقه ها، عملیات جایگزینی و موارد مشابه استفاده می شود.
    • LCase() و UCase() - رشته را به ترتیب به حروف کوچک و بزرگ تبدیل کنید. اغلب برای تهیه یک مقدار برای مقایسه زمانی که مقایسه به حروف بزرگ و کوچک حساس نیست استفاده می شود (نام خانوادگی، نام شرکت ها، شهرها و ...).
    • LSet() و RSset() - توانایی پر کردن یک متغیر با نمادهای متغیر دیگر بدون تغییر طول آن (به ترتیب چپ و راست). کاراکترهای اضافی قطع می‌شوند، فاصله‌ها جایگزین کاراکترهای گمشده می‌شوند.
    • LTrim() , RTrim() , کوتاه کردن() - قابلیت حذف فاصله ها به ترتیب در سمت چپ، راست یا هر دو سمت چپ و راست.
    • جایگزین کردن() - امکان جایگزینی یک دنباله از کاراکترها در یک رشته با دیگری.

      Dim sStr As String sStr = "سلام، دنیا!" MsgBox Replace(sStr، "Hello"، "Bay")

    • فضا() - از تعداد فضاهایی که مشخص کرده اید یک رشته دریافت کنید.
      یکی دیگر از ویژگی های مشابه این است Spc() ، که برای فرمت کردن خروجی کنسول استفاده می شود. فاصله ها را بر اساس عرض خط فرمان ضرب می کند.
    • StrComp() - امکان مقایسه دو رشته.
    • StrConv() - قابلیت تبدیل رشته (به و از یونیکد، به حروف بزرگ و کوچک، بزرگ کردن حرف اول کلمات و غیره):

      Dim sStr As String sStr = "سلام، دنیا!" MsgBox StrConv ("سلام، دنیا!"، vbUpperCase)

      ثابت ها را می توان به عنوان دومین پارامتر پارامتر استفاده کرد:

        • vbUpperCase:همه کاراکترهای متن را به حروف بزرگ تبدیل می کند
        • vbLowerCase:همه کاراکترهای متن را به حروف کوچک تبدیل می کند
        • vbProperCase:اولین کاراکتر هر کلمه را به حروف بزرگ تبدیل می کند
        • *vbWide:کاراکترهای یک رشته را از تک بایتی به دو بایتی تبدیل می کند
        • *vbNarrow:کاراکترهای یک رشته را از دو بایت به تک بایت تبدیل می کند
        • **vbKatakana:شخصیت های هیراگانا را به شخصیت های کاتاکانا تبدیل می کند
        • **vb هیراگانا:شخصیت های کاتاکانا را به شخصیت های هیراگانا تبدیل می کند
        • ***vb یونیکد:یک رشته را با استفاده از صفحه کد پیش فرض سیستم به یونیکد تبدیل می کند
        • ***vbFromUnicode:یک رشته را از یونیکد به صفحه کد پیش فرض سیستم تبدیل می کند

      * قابل اجرا برای محلی سازی های خاور دور
      ** فقط برای ژاپن قابل اجراست
      *** در سیستم عامل های مکینتاش پشتیبانی نمی شود

    • StrReverse() - رشته را با قرار دادن کاراکترهای آن به ترتیب معکوس "معکوس" کنید. این تابع فقط از Excel 2000 و بالاتر کار می کند. نمونه ای از استفاده از تابع و همچنین روش های دیگر برای برگرداندن یک کلمه را می توانید در این مقاله بیابید: چگونه یک کلمه را ورق بزنیم؟
    • Tab() تابع دیگری است که برای فرمت کردن خروجی کنسول استفاده می شود. کاراکترهای برگه را به تعداد مشخص شده ضرب می کند. اگر عددی مشخص نشده است، به سادگی یک کاراکتر برگه را وارد کنید. همچنین می توانید از ثابت برای درج یک کاراکتر برگه در مقدار رشته استفاده کنید vbTab.
    • رشته() - به شما امکان می دهد یک رشته از تعداد کاراکترهای مشخص شده دریافت کنید (که باز هم توسط شما مشخص شده است). معمولاً برای فرمت کردن خروجی در ارتباط با تابع استفاده می شود لن().

    سه تابع زیر به شما امکان می دهد با یک آرایه از رشته ها کار کنید

    شکاف (<строка> [, <разделитель>]) - یک رشته را به آرایه ای از رشته های فرعی تبدیل می کند. جداکننده پیش فرض یک فاصله است. این تابع برای تقسیم جملات به کلمات مفید است. با این حال، می توانید هر جداکننده دیگری را در این تابع مشخص کنید. برای مثال، Split(3، "این یک پیشنهاد آزمایشی است") آرایه ای از سه مقدار رشته را برمی گرداند: "This"، "test"، "offer". پیوستن(<массивСтрок> [, <разделитель>]) - آرایه ای از رشته ها را با جداکننده مشخص شده به یک رشته تبدیل می کند. فیلتر(<массивСтрок>, <строкаПоиск>[, <включение>] [, <сравнение>]) - از طریق یک آرایه از مقادیر رشته تکرار می شود و همه زیررشته های موجود در آن را که با رشته داده شده مطابقت دارند جستجو می کند. این تابع چهار آرگومان دارد:<строкаПоиск>- رشته جستجو؛<включение>– یک پارامتر (مقدار بولی) که نشان می‌دهد آیا رشته‌های برگشتی شامل زیررشته‌های جستجو شده می‌شوند یا برعکس، تنها رشته‌های آرایه‌ای که رشته جستجو شده را به‌عنوان یک رشته فرعی ندارند، برگردانده می‌شوند.<сравнение>- پارامتری که روش مقایسه رشته ها را تعریف می کند. سه تابع دیگر تبدیل رشته را فراهم می کنند: LCase(<строка>) - تمام کاراکترهای رشته را به حروف کوچک تبدیل می کند، برای مثال، تابع LCase("MAIL") رشته "mail" را برمی گرداند. UCase(<строка>) - تمام کاراکترهای رشته را به حروف بزرگ تبدیل می کند. StrConv(<строка>, <преобразование>) - بسته به پارامتر دوم چندین نوع تبدیل رشته را انجام می دهد. این پارامتر با ثابت های داخلی توصیف می شود، برای مثال، تابع StrConv("Poccia"، VbProperCase) مقدار "Russia" را برمی گرداند.

    و دو تابع آخر رشته های کاراکتری را تولید می کنند

    فضا(<число>) - رشته ای متشکل از تعداد مشخص فاصله ایجاد می کند. رشته(<число>, <символ>) - رشته ای متشکل از تعداد کاراکترهای مشخص شده در آرگومان اول ایجاد می کند. خود نماد در آرگومان دوم مشخص شده است.

    مثال

    برنامه ای بنویسید که با متغیرهای رشته کار کند. برای انجام این کار، فرمی ایجاد کنید که برچسب های آن حاوی پیام های زیر باشد: 1 label: طول رشته وارد شده در اولین فیلد متنی (1 خط) گزارش می شود. برچسب 2: تمام کاراکترهای قسمت سوم متن (خط 3) را به حروف بزرگ تبدیل می کند. برچسب 3: محتویات فیلدهای متن اول و دوم (خطوط 1 و 2) را با هم چاپ می کند.

    تکنولوژی اجرا

    • برنامه Word را باز کنید، سند را ذخیره کنید و به ویرایشگر VBA بروید.
    • به روشی که در شکل نشان داده شده است یک فرم ایجاد کنید.
    • یک کنترل کننده رویداد برای دکمه OK بنویسید.
    • برنامه را کامپایل کنید.
    • فرم را برای اجرا اجرا کنید.

    خصوصی Sub CommandButton1_Click() Dim a به عنوان رشته Dim b به عنوان رشته کم نور c به عنوان رشته Dim k به عنوان رشته کم d به عنوان رشته کم n به عنوان عدد صحیح a=TextBox1.Text n=Len(a) Label7.Caption="طول اولین خط است" & n & "شخصیت" c=TextBox3.Text k=Ucase(c) Label8.Caption=k b=TextBox2.Text d=a + » » + b Label9.Caption=d پایان فرعی

    وظیفه

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

    کد ویژوال بیسیک
    1 2 3 4 5 6 Dim m() به عنوان رشته If InStr(1, Cells(1, 2).Value, ",") > 0 سپس m = Split(Replace(Cells(1,2).Value, " ", "")، " ") Else ReDim m(0): m(0) = Trim(Cells(1,2).Value) پایان اگر

    و سپس در چرخه برای همه کلماتی که به دنبال آن هستید (دوباره در چرخه. در تودرتو) بعد از 23 دقیقه اضافه شد

    کد ویژوال بیسیک
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Option Compare Text Option Explicit Sub QWERT() Dim R, N, K Dim m() As String If InStr(1, Cells(1, 2).Value, ",") > 0 سپس m = Split(Replace(Cells( 1، 2). مقدار، " "، "")، "") در غیر این صورت ReDim m(0): m(0) = Trim(Cells(1,2).Value) End If For R = 0 To UBound( m) N = 1 اگر InStr(1, Cells(1, 1).Value, m(R)) > 0 سپس K = InStr(N, Cells(1, 1).Value, m(R)) COLOR K , Len(m(R)) N = K + Len(m(R)) K = InStr(N, Cells(1, 1).Value, m(R)) حلقه در حالی که K > 0 End اگر بعدی R End Sub رنگ فرعی (ST، LN) با سلول‌ها (1، 1). نویسه‌ها (شروع:=ST، طول:=LN). قلم. رنگ = RGB (0، 0، 255) .پررنگ = پایان واقعی با پایان فرعی

    بعد از 15 دقیقه اضافه شد و به این ترتیب در ابتدای کلمه جستجو می کند و کل کلمه را انتخاب می کند

    کد ویژوال بیسیک
    1 2 3 4 5 6 7 8 9 10 11 رنگ فرعی (ST، LN) LN = LN - 1 Do LN = LN + 1 Loop while VBA.Mid(سلولها(1، 1). مقدار، ST + LN، 1)<>" " با سلول ها(1، 1). کاراکترها(شروع:=ST، طول:=LN). قلم. رنگ = RGB(0، 0، 255) .پررنگ = پایان واقعی با پایان فرعی

    شما می توانید آنچه را که به دنبال آن هستید و نه از ابتدای کلمه، بلکه با بخشی از کلمه انجام دهید. - یک Do-Loop دیگر اضافه کنید. فقط ابتدا (ST) را به سمت چپ تغییر دهید تا یک فاصله (http://www.cyberforum.ru/vba/thread567588.html)

    چگونه می توان یک رشته را با یک الگو مطابقت داد (ویژوال بیسیک)

    بررسی انطباقرشته به الگو رشته نوع داده (ویژوال بیسیک) - عملگر مانند (ویژوال بیسیک). عملوند سمت چپ عملگر Like یک عبارت رشته ای است و عملوند سمت راست یک رشته الگو است Like مقداری از نوع Boolean را برمی گرداند.

    بررسی نماد

    ? - هر شخصیت

    • myString از یک کاراکتر W تشکیل شده است که با هر 2 کاراکتر همراه است

      Dim sMatch As Boolean = myString مانند "W??"

    هر کاراکتری از لیست و محدوده

    هر شخصیت و سپس یکی از شخصیت های A، C، یا E

      کمرنگ شدن sMatch به عنوان Boolean = myString مانند "?" حساس به حروف کوچک و بزرگ

    • myString = تعداد کاراکترها و سپس یک کاراکتر از محدوده: i، j، k، l، m، یا n:

      Dim sMatch به عنوان Boolean = myString مانند "num" حساس به حروف کوچک و بزرگ

    مانند کار با یک رشته آرایه رشته ای با طول صفر (""). به شما امکان می دهد بررسی کنید که آیا یک رشته خالی است یا خیر

    شخصیت از لیست یا عدم وجود شخصیت

    1. عملگر Like دو بار استفاده می شود و نتایج با استفاده از اپراتور Or (Visual Basic) یا OrElse Operator (Visual Basic) ترکیب می شوند.
    2. در قالب دستور اول، لیستی از کاراکترها را در پرانتز () وارد کنید.
    3. در قالب دستور دوم، چیزی را در محل تست قرار ندهید، مثال: تست شماره تلفن هفت رقمی phoneNum که باید دقیقاً شامل سه رقم باشد و به دنبال آن فاصله، خط فاصله، نقطه یا بدون کاراکتر باشد. و سپس چهار رقمی. (سه رقم اول ممکن است از چهار رقم آخر جدا نشوند - "بدون کاراکتر") تهی، یک خطا رخ می دهد. اگر استدلالی داده شود مقایسه_نوع ، بحث و جدل نقطه شروع اجباری است. خط 1 ضروری. بیان رشتهکه در آن جستجو کنید. خط 2 ضروری. عبارت رشته مورد نظر مقایسه_نوع اختیاری. نوع را مشخص می کند مقایسه رشته ها. اگر ارزش استدلال مقایسه_نوع صفر است، خطایی رخ می دهد. اگر استدلال مقایسه_نوع حذف شده، نوع مقایسه با پارامتر تعریف شده است معنی چهارشنبهخیابان. برای استفاده از قوانین مقایسه مشخص شده در تنظیمات زبان، یک پارامتر LCID (LocaleID) معتبر مشخص کنید.

      گزینه ها

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

      ارزش های بازگشتی

      ملاحظات

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

      مثال ها

      استفاده از تابع InStr در یک عبارتهر بار که از عبارات استفاده می کنید، می توانید از تابع استفاده کنید InStr. به عنوان مثال، اگر می خواهید موقعیت نقطه اول را تعیین کنید ( . ) در فیلدی که حاوی آدرس IP است (با نام "IPAddress")، می توانید از تابع استفاده کنید InStrبرای جستجوی آن:

      InStr(1,".")

      تابع InStrبه هر مقدار در قسمت "IPAddress" نگاه می کند و موقعیت اولین نقطه را برمی گرداند. بنابراین، اگر مقدار اکتت اول آدرس IP باشد 10. ، تابع 3 را برمی گرداند.

      می توانید از توابع دیگری که از نتیجه تابع استفاده می کنند استفاده کنید InStr، برای استخراج مقدار octet آدرس IP که قبل از اولین نقطه قرار دارد، به عنوان مثال:

      Left(,(InStr(1,."")-1))

      در این مثال تابع InStr(1,".")موقعیت نقطه اول را برمی گرداند. نتیجه تفریق 1 تعداد کاراکترهای قبل از نقطه اول است، در این مورد - 2. سپس تابع ترک کردآن کاراکترها را از سمت چپ فیلد "IPAddress" استخراج می کند و مقدار 10 را برمی گرداند.

      استفاده از عملکرد InStrدر کد ویژوال بیسیک برای برنامه های کاربردی (VBA).

      توجه داشته باشید.مثال های زیر نحوه استفاده از قابلیت های یک ماژول Visual Basic for Applications (VBA) را نشان می دهد. برای اطلاعات بیشتر در مورد کار با VBA، را انتخاب کنید راهنمای توسعه دهندهدر منوی کشویی کنار دکمه جستجو کردنو سپس یک یا چند کلمه کلیدی را در کادر جستجو وارد کنید.

      در این مثال تابع InStrبرای بدست آوردن موقعیت اولین وقوع یک رشته در رشته دیگر استفاده می شود.

      کم نور SearchString، SearchChar، MyPos SearchString "XXpXXpXXPXXP" " رشته برای جستجو. SearchChar = "P" " جستجو برای "P". " مقایسه متنی که از موقعیت 4 شروع می شود. 6 را برمی گرداند. MyPos = Instr( 4, SearchString , جستجوگر , 1) "یک مقایسه باینری که از موقعیت 1 شروع می شود. 9 را برمی گرداند. MyPos = Instr( 1, SearchString , جستجوگر , 0) "مقایسه به طور پیش فرض باینری است" (آخرین آرگومان حذف شده است). MyPos= Instr( SearchString , جستجوگر ) برمی‌گرداند 9. MyPos = Instr( 1, SearchString , "W" ) 0 را برمی گرداند.

    بنابراین، ما دروس پاسکال خود را برای مبتدیان ادامه می دهیم. در درس آخر بحث کردیم، اما در آنجا به کاراکترها اشاره کردیم، بنابراین قبل از مطالعه عمیق نوع داده، با نوع Char آشنا می شویم. نوع داده کاراکتری Charیک نوع داده است که مقادیر آن تک کاراکتر است. این نوع می تواند فقط یک کاراکتر داشته باشد (به عنوان مثال: "*"، "/"، "."، "!" و دیگران). هر یک از این کاراکترها 8 بیت حافظه را اشغال می کند، در کل 256 کاراکتر هشت بیتی وجود دارد. تمام کاراکترهای استفاده شده توسط نوع کاراکتر Char در جدول کاراکترهای ASCII (کد استاندارد آمریکایی برای تبادل اطلاعات) یا کد استاندارد آمریکایی برای تبادل اطلاعات نوشته شده است.

    ثابت های کاراکتر در آپستروف ها مانند "."، "*"، "7"، "s" محصور می شوند. همچنین، یک ثابت کاراکتر را می توان با استفاده از یک نماد نوشت - "شبکه"، به عنوان مثال # 185 - کاراکتر را در شماره 185 از جدول ASCII نمایش می دهد (این کاراکتر "#" است).

    5 عملکرد قابل اجرا برای نوع کاراکتر وجود دارد: Ord، Chr، Pred، Succ و Upcase.

    تابع Ord یک کاراکتر را به کد عددی آن تبدیل می کند جداول ASCII. به عنوان مثال، برای کاراکتر "#" مقدار 185 را برمی گرداند. تابع Chr معکوس تابع Ord است. تابع Chr کد کاراکتر عددی را به خود کاراکتر تبدیل می‌کند، برای مثال، اگر کد عددی را 64 بگیرید، تابع Chr (64) کاراکتر "@" را برمی‌گرداند.

    مثالی از یک برنامه پاسکال با استفاده از تابع Ord:


    شروع //شروع برنامه

    writeln(ord(x)); //نمایش شماره در جدول ASCII
    پایان. // پایان برنامه

    مثالی از یک برنامه پاسکال با استفاده از تابع Chr:

    varx:integer; // شرح متغیرها (x - نوع عدد صحیح)
    شروع //شروع برنامه
    readln(x); //خواندن یک متغیر
    writeln(chr(x)); //نمایش کاراکتر بر اساس عدد در جدول ASCII
    پایان. // پایان برنامه

    تابع Pred مقدار کاراکتر قبلی را از جدول ASCII برمی گرداند، به عنوان مثال، برای کاراکتر "P" (Pred(P)) این تابع کاراکتر "O" را برمی گرداند. تابع Succ معکوس تابع Pred است. برای کاراکتر "P"، تابع Succ(P) کاراکتر "Q" را برمی‌گرداند که کاراکتر بعدی جدول ASCII بالا است.

    نمونه ای از یک برنامه پاسکال با استفاده از توابع Pred و Succ:

    varx:char; // شرح متغیرها (x - نوع کاراکتر)
    شروع //شروع برنامه
    readln(x); //خواندن یک متغیر
    writeln(pred(x)); //خروجی کاراکتر قبلی در جدول ASCII
    writeln(succ(x)); // خروجی کاراکتر بعدی در جدول ASCII
    پایان. // پایان برنامه

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

    نمونه ای از برنامه پاسکال با استفاده از تابع UpCase:

    پیوست درس - جداول کاراکتر ASCII:

    درس برای امروز تمام شد. به یاد بیاور برنامه نویسی پاسکالساده است و اساس بسیاری از زبان های برنامه نویسی است.

    • ASC () - این تابع به شما امکان می دهد کد عددی کاراکتر ارسال شده را برگردانید. به عنوان مثال، ASC("D") 68 را برمی گرداند. این تابع برای تعیین حرف بعدی یا قبلی مفید است. معمولاً همراه با تابع استفاده می شود Chr() که عملیات معکوس را انجام می دهد - یک کاراکتر را با توجه به کد عددی آن برمی گرداند. انواع این تابع - AscB() و AscW():
      • AscB () - فقط اولین بایت از کد عددی کاراکتر را برمی گرداند.
      • AscW () - کد یک کاراکتر یونیکد را برمی گرداند
    • Chr () - یک کاراکتر را با کد عددی آن برمی گرداند. می تواند همراه با تابع Asc () استفاده شود، اما اغلب زمانی استفاده می شود که شما نیاز به خروجی یک کاراکتر سرویس دارید. (به عنوان مثال نقل قول - ")، زیرا نقل قول ها فقط در کد VBA وارد نمی شوند (شما باید دو برابر کنید). من معمولا از این ویژگی استفاده می کنم.

      شمشیر کم نور به عنوان شمشیر رشته = Chr(34) و "واژه نقل قول" و Chr(34)

      انواع مختلفی از این تابع وجود دارد - ChrB() و ChrW(). آنها مشابه گزینه های مشابه برای عملکرد کار می کنند Asc().

    • InStr () و InStrRev () یکی از محبوب ترین ویژگی ها است. به شما امکان می دهد یک کاراکتر یا دنباله ای از کاراکترها را در بدنه یک متغیر رشته پیدا کنید و موقعیت آنها را برگردانید. اگر دنباله پیدا نشد، 0 برگردانده می شود.

      Dim sStr As String sStr = "w" اگر InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 سپس MsgBox "کلمه جستجو وجود دارد!" MsgBox دیگر "کلمه جستجو گم شده است!" پایان اگر

      تفاوت بین توابع این است که InStr() کلمه مشخص شده را از ابتدای رشته جستجو می کند و InStrRev() از انتهای رشته جستجو می کند.

    • ترک کرد () , درست () , اواسط () - توانایی گرفتن تعداد کاراکترهایی که از یک متغیر رشته موجود در سمت چپ، راست یا وسط تعیین می کنید.
      Dim sStr As String sStr = "سلام، دنیا!" MsgBoxMid(sStr, 1, 5)

      Dim sStr As String sStr = "سلام، دنیا!" MsgBoxMid(sStr, 1, 5)

    • لن () - امکان به دست آوردن تعداد کاراکترهای یک رشته. اغلب با حلقه ها، عملیات جایگزینی و موارد مشابه استفاده می شود.
    • LCase () و UCase () - رشته را به ترتیب به حروف کوچک و بزرگ تبدیل کنید. اغلب برای تهیه یک مقدار برای مقایسه زمانی که مقایسه به حروف بزرگ و کوچک حساس نیست استفاده می شود (نام خانوادگی، نام شرکت ها، شهرها و ...).
    • LSet () و RSset () - توانایی پر کردن یک متغیر با نمادهای متغیر دیگر بدون تغییر طول آن (به ترتیب چپ و راست). کاراکترهای اضافی قطع می‌شوند، فاصله‌ها جایگزین کاراکترهای گمشده می‌شوند.
    • LTrim () , RTrim () , کوتاه کردن () - قابلیت حذف فاصله ها به ترتیب در سمت چپ، راست یا هر دو سمت چپ و راست.
    • جایگزین کردن () - امکان جایگزینی یک دنباله از کاراکترها در یک رشته با دیگری.
      Dim sStr As String sStr = "سلام، دنیا!" MsgBox Replace(sStr، "Hello"، "Bay")

      Dim sStr As String sStr = "سلام، دنیا!" MsgBox Replace(sStr، "Hello"، "Bay")

    • فضا () - از تعداد فضاهایی که مشخص کرده اید یک رشته دریافت کنید.
      یکی دیگر از ویژگی های مشابه این است Spc () ، که برای فرمت کردن خروجی کنسول استفاده می شود. فاصله ها را بر اساس عرض خط فرمان ضرب می کند.
    • StrComp () - امکان مقایسه دو رشته.
    • StrConv () - قابلیت تبدیل رشته (به و از یونیکد، به حروف بزرگ و کوچک، بزرگ کردن حرف اول کلمات و غیره):
      Dim sStr As String sStr = "سلام، دنیا!" MsgBox StrConv ("سلام، دنیا!"، vbUpperCase)

      Dim sStr As String sStr = "سلام، دنیا!" MsgBox StrConv ("سلام، دنیا!"، vbUpperCase)

      ثابت ها را می توان به عنوان دومین پارامتر پارامتر استفاده کرد:

      • vbUpperCase:همه کاراکترهای متن را به حروف بزرگ تبدیل می کند
      • vbLowerCase:همه کاراکترهای متن را به حروف کوچک تبدیل می کند
      • vbProperCase:اولین کاراکتر هر کلمه را به حروف بزرگ تبدیل می کند
      • *vbWide:کاراکترهای یک رشته را از تک بایتی به دو بایتی تبدیل می کند
      • *vbNarrow:کاراکترهای یک رشته را از دو بایت به تک بایت تبدیل می کند
      • **vbKatakana:شخصیت های هیراگانا را به شخصیت های کاتاکانا تبدیل می کند
      • **vb هیراگانا:شخصیت های کاتاکانا را به شخصیت های هیراگانا تبدیل می کند
      • ***vb یونیکد:یک رشته را با استفاده از صفحه کد پیش فرض سیستم به یونیکد تبدیل می کند
      • ***vbFromUnicode:یک رشته را از یونیکد به صفحه کد پیش فرض سیستم تبدیل می کند
      • * برای محلی سازی خاور دور قابل استفاده است
        ** فقط برای ژاپن قابل اجراست
        *** در سیستم عامل های مکینتاش پشتیبانی نمی شود

    • StrReverse () - رشته را با قرار دادن کاراکترهای آن به ترتیب معکوس "معکوس" کنید. این تابع فقط از Excel 2000 و بالاتر کار می کند. نمونه ای از استفاده از تابع و همچنین روش های دیگر برای برگرداندن یک کلمه را می توانید در این مقاله بیابید: چگونه یک کلمه را ورق بزنیم؟
    • Tab () تابع دیگری است که برای فرمت کردن خروجی کنسول استفاده می شود. کاراکترهای برگه را به تعداد مشخص شده ضرب می کند. اگر عددی مشخص نشده است، به سادگی یک کاراکتر برگه را وارد کنید. همچنین می توانید از ثابت برای درج یک کاراکتر برگه در مقدار رشته استفاده کنید vbTab.
    • رشته () - به شما امکان می دهد یک رشته از تعداد کاراکترهای مشخص شده دریافت کنید (که باز هم توسط شما مشخص شده است). معمولاً برای فرمت کردن خروجی در ارتباط با تابع استفاده می شود لن().
    Chr

    تابع Chr

    Chr(CharCode)
    Chr$(CharCode)
    ChrB (CharCode)
    ChrW (CharCode)

    تابع Chr(چعمل می کند r) به شما امکان می دهد یک کاراکتر را با مقدار کد عددی ANSI یا Unicode آن بدست آورید

    ارزش برگشتی

    کارکرد Chr, ChrB, ChrWیک مقدار رشته فرعی از نوع Variant حاوی کاراکتر مربوط به کد کاراکتر ANSI یا Unicode مشخص شده را برمی گرداند. کارکرد Chr$, ChrB$, ChrW$به ترتیب مقداری از نوع String را برمی گرداند

    توجه داشته باشید

    Chrو Chr$یک کاراکتر را با رمزگذاری ANSI آن برمی گرداند
    ChrBو ChrB$برگشت یک بایترشته
    ChrWیک کاراکتر یونیکد را برمی‌گرداند، اما در سیستم‌های غیریونیکد یکسان رفتار می‌کند Chr
    استفاده در پارامتر CharCodeمقادیر بیشتر از 255 خطای زمان اجرا ایجاد می کند 5: فراخوانی یا آرگومان رویه نامعتبر یا 6: سرریز

    گزینه ها CharCode آرگومان مورد نیاز Long است که کاراکتر را مشخص می کند. معمولا، تابع Chrهنگام درج کاراکترهای غیر قابل چاپ در رشته های متنی (بازگشت حمل، تغذیه خط، برگه و غیره) استفاده می شود. کدهای 0-31 با کاراکترهای کنترل استاندارد ASCII مطابقت دارند. مثلا، Chr(10) کاراکتر خط جدید را برمی گرداند مثالکم نور retval = Chr(65) Debug.Print retval " A را برمی گرداند دسته بندی