آموزش ویژوال بیسیک

آموزش قدم به قدم ویژاول بیسیک 2015 از مبتدی تا پیشرفته

آموزش ویژوال بیسیک

آموزش قدم به قدم ویژاول بیسیک 2015 از مبتدی تا پیشرفته

طبقه بندی موضوعی

درس ششم: کار با داده های رشته ای

جمعه, ۲۳ بهمن ۱۳۹۴، ۰۴:۰۴ ب.ظ

درس ششم: کار با داده های رشته ای

6-1 مقدمه

  در درس قبل با انواع عملیات روی داده های عددی آشنا شدیم. در این درس به عملیات بر داده های رشته ای پرداخته و با چند تابع مهم برای پردازش داده های رشته ای آشنا میشویم.

6-2 اتصال متغیر های رشته ای به هم دیگر یا به رشته های عددی

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

  1. برای اتصال رشته به رشته یا متغیر رشته ای به متغیر رشته ای میتوان از + یا & استفاده کرد.
  2. برای اتصال رشته یا متغیر رشته ای به عدد یا متغیر عددی فقط و فقط میتوان از & استفاده کرد. 
  3. علامت پلاس + برای اعداد به منظور انجام عملیات ریاضی اضافه کردن و نیز اینکریمنت رزرو شده است.

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

6-3 توابع رشته ای

6-3-1 تابع طول رشته ()Len

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

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Dim s As String, x As Integer
        s = "This is a string"
        x = Len(s)
        MsgBox("Length of the string '" & s & "' is equal to : " & x, vbInformation + vbOKOnly, "Example of Len()")

End Sub

  در کد بالا برای اتصال رشته های پیغام به عدد طول رشته، از & استفاده کردیم. به یاد داشته باشید که اگر از + استفاده میکردیم با یک ارور مواجه می شدیم.

  تمرین: کد بالا را کامپایل و اجرا کنید و در آن تغییراتی دهید و نتیجه را ببینید.

6-3-2 تابع برش از راست ()Microsoft.VisualBasic.Right

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

  بنابراین این تابع همیشه دو ورودی میپذیرد و یک خروجی دارد. ورودی اول رشته ی مورد نظر، ورودی دوم یک عدد صحیح برای طول برش و خروجی نیز رشته ی برش خورده از نوع string  میباشد. مثال:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim s, r As String
        s = "This is a string"
        r = Microsoft.VisualBasic.Right(s, 4)
        MsgBox(r, vbInformation + vbOKOnly, "Example of Microsoft.VisualBasic.Right()")
    End Sub

  تمرین: کد بالا را کامپایل و اجرا کنید و در آن تغییراتی دهید و نتیجه را ببینید.

6-3-3 تابع برش از چپ ()Microsoft.VisualBasic.Left

  این تابع رشته را از سمت چپ به تعدادی که مشخص شده برش میزند و خروجی این تابع همیشه از نوع string یا رشته ای میباشد.

  بنابراین این تابع همیشه دو ورودی میپذیرد و یک خروجی دارد. ورودی اول رشته ی مورد نظر، ورودی دوم یک عدد صحیح برای طول برش و خروجی نیز رشته ی برش خورده از نوع string  میباشد. مثال:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim s, r As String
        s = "This is a string"
        r = Microsoft.VisualBasic.left(s, 4)
        MsgBox(r, vbInformation + vbOKOnly, "Example of Microsoft.VisualBasic.Right()")
    End Sub

  تمرین: کد بالا را کامپایل و اجرا کنید و در آن تغییراتی دهید و نتیجه را ببینید.

6-3-4 تابع برش رشته ()Mid

  این تابع رشته را از مکان مشخص شده ، از چپ به راست به طول مشخص شده برش میزند و خروجی این تابع از نوع string یا رشته ای میباشد.

  بنابراین این تابع همیشه سه  ورودی میپذیرد و یک خروجی دارد. ورودی اول رشته ی مورد نظر، ورودی دوم یک عدد صحیح برای شماره ی ایندکس مورد نظر برای شروع برش و ورودی سوم، طول برش میباشد. خروجی نیز رشته ی برش خورده از نوع string  است. سینتکس این تابع به شکل زیر است :

Mid(“String”,2,3) ‘output => tri

 مثال:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim s, r As String
        s = "This is a string"
        r = Mid(s, 6, 4)
        MsgBox(r, vbInformation + vbOKOnly, "Example of Mid()")
    End Sub

6-3-5 تابع جست و جوی رشته ()InStr

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

  بنابراین ، تابع ()InStr سه ورودی و یک خروجی دارد. ورودی اول محل آغاز جست و جو در رشته ی اصلی است. ورودی دوم رشته اصلی است و ورودی سوم رشته ی مورد جست و جو یا همان رشته ی کوچکتر میباشد. خروجی این تابع همیشه یک عدد صحیح است. سینتکس این تابع به صورت زیر میباشد:

InStr(x,”String1”,”String2”)

مثال:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim s, r As String
        s = "This is a string"
        r = InStr(1, s, "string")
        MsgBox(r, vbInformation + vbOKOnly, "Example of Mid()")
    End Sub

  تمرین: کد بالا را کامپایل و اجرا کنید و در آن تغییراتی دهید و نتیجه را ببینید.

6-3-6 توابع تبدیل حروف کوچک و بزرگ به یکدیگر ()Microsoft.VisualBasic.UCase() & Lcase

  تابع ()Microsoft.VisualBasic.UCase رشته ای را از ورودی میپذیرد و کلیه حروف آن رشته را به حروف بزرگ تبدیل میکند. خروجی این تابع همیشه یک رشته خواهد بود.

  تابع ()Microsoft.VisualBasic.LCase رشته ای را از ورودی میپذیرد و کلیه حروف آن رشته را به حروف کوچک تبدیل میکند. خروجی این تابع همیشه یک رشته خواهد بود.

مثال:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim s, r As String
        s = "This is a string"
        r = Microsoft.VisualBasic.UCase(s)
        MsgBox(r, vbInformation + vbOKOnly, "Example of Mid()")
    End Sub

  تمرین: کد بالا را کامپایل و اجرا کنید و در آن تغییراتی دهید و نتیجه را ببینید.

6-3-7 توابع تبدیل کاراکتر به کد اسکی و برعکس ()Chr() , Asc

  تابع ()Chr کد اسکی را پذیرفته و کاراکتر آن را نمایش میدهد. خروجی این تابع همیشه از نوع رشته ای است.

  تابع ()Asc کاراکتری را پذیرفته و کد اسکی آن را نمایش میدهد. خروجی این تابع همیشه از نوع عدد صحیح میباشد.

Chr(68) ‘Output => D

Asc(“h”) ‘Output => 104

6-4 تبدیل رشته به عدد و برعکس با استفاده از Cast ها ()Val() , Str

  در ابتدای این درس گفتیم که اعداد اگر داخل “کوتیشن” قرار بگیرند، درست مثل باقی رشته ها باید با آنان رفتار کرد و کلیه قوانین مربوط به رفتار و کار با اعداد برای انها دیگر صادق نیست. برای تبدیل اعدادی که از نوع داده ی رشته ای هستند به ماهیت واقعی شان یعنی اعداد میتوان از تابع ()Val استفاده کرد. همچنین برای تبدیل یک داده ی عدیی به یک رشته میتوان از ()Str استفاده کرد.

  تابع ()Val یک رشته یا کاراکتر را به عنوان ورودی میپذیرد و اگر در آن رشته یا کاراکتر فقط کاراکترهای عددی وجود داشت؛ همان عدد را به عنوان یک داده ی عددی بر میگرداند تا بتوان با آن مانند اعداد دیگر رفتار نمود. در صورتی که در رشته عددی نباشد یا علاوه بر اعداد کاراکتر های رشته ای هم وجود داشته باشد این تابع هیچ چیز بر نمیگرداند. مثال:

MsgBox(Val("1992") + 1) ‘Output => 1993

  تابع Str() یک عدد را دریافت و آن را به رشته تبدیل میکند. مثال:

MsgBox("Visual Basic " + Str(2015)) ‘Output => Visual Basic 2015

 

  کد زیر را کامپایل و اجرا کنید. فرم را مطابق شکل 1-6 طراحی کنید. سعی کنید کد را برای خود تحلیل نمایید.

شکل 1-6

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        TextBox2.Text = Microsoft.VisualBasic.UCase(TextBox1.Text)
    End Sub
End Class

تمرین: برنامه ای بنویسید که یک رشته را از کاربر پذیرفته و به طولی که کاربر مشخص میکند از سمت چپ رشته را برش زده و در خروجی نمایش دهد.