วิธีการสตริงย่อย VB.NET พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

VB.Net Substring extracเมธอดนี้ใช้สำหรับตัดส่วนหนึ่งของสตริงโดยระบุตำแหน่งเริ่มต้นและความยาว (ถ้ามี) เมธอดนี้เป็นของคลาส String นับจำนวนอักขระจากศูนย์ และส่งคืนสตริงใหม่โดยไม่เปลี่ยนแปลงสตริงเดิม

  • 🔢 ดัชนีแบบฐานศูนย์: เมธอด Substring จะนับจำนวนอักขระจากดัชนี 0 ดังนั้นตัวอักษรตัวแรกของสตริงจะอยู่ที่ตำแหน่งศูนย์
  • ☑️ การโอเวอร์โหลดสองครั้ง: การส่งอาร์กิวเมนต์หนึ่งตัวจะส่งคืนทุกอย่างตั้งแต่ดัชนีนั้นเป็นต้นไป ในขณะที่การส่งอาร์กิวเมนต์สองตัวจะส่งคืนอักขระจำนวนคงที่
  • 🇧🇷 Extract ตามตำแหน่ง: รวม Substring กับ IndexOf หรือ LastIndexOf เพื่อดึงข้อความก่อนหรือหลังอักขระที่ระบุ
  • ⚠️ การจัดทำดัชนีอย่างปลอดภัย: หากค่าดัชนีเป็นลบหรืออยู่นอกช่วงที่กำหนด จะทำให้เกิดข้อผิดพลาด ArgumentOutOfRangeException ดังนั้นควรตรวจสอบค่าก่อนเรียกใช้เมธอด
  • 🔤 ผลลัพธ์ที่ไม่สามารถเปลี่ยนแปลงได้: เมธอด Substring จะส่งคืนสตริงใหม่โดยไม่เปลี่ยนแปลงสตริงต้นฉบับ ซึ่งสอดคล้องกับคุณสมบัติที่ไม่สามารถเปลี่ยนแปลงได้ของสตริงใน .NET
  • 🤖 ความช่วยเหลือจากเอไอ: GitHub Copilot และ IntelliCode ใน Visual Studio 2026 จะแนะนำการเรียกใช้ Substring ที่ถูกต้องและแจ้งเตือนเมื่อดัชนีอยู่นอกช่วงขณะที่คุณพิมพ์

VB.Net สตริงย่อย

สตริงย่อยคืออะไร?

ฟังก์ชัน Substring ใช้สำหรับดึงส่วนหนึ่งของสตริงที่ระบุ เมธอดนี้ถูกกำหนดไว้ในคลาส String Microsoft VB.Netคุณต้องระบุหมายเลขดัชนีเริ่มต้นที่จะใช้ในการแสดงสตริงtracted. สตริงจะถูก extracted จากดัชนีนั้นไปจนถึงความยาวที่คุณระบุ

ก่อนหน้านี้tracการเข้าใจไวยากรณ์ที่เมธอด Substring คาดหวังจะช่วยได้มาก

ไวยากรณ์ของสตริงย่อย

ฟังก์ชันนี้ยอมรับอาร์กิวเมนต์สองตัวตามที่แสดงในไวยากรณ์ต่อไปนี้:

Public Function Substring(ByVal start_Index As Integer, ByVal sub_length As Integer) As String

ที่นี่

  • คีย์เวิร์ด ByVal หมายถึง pass-by-value ซึ่งเป็นกลไกในการส่งผ่านอาร์กิวเมนต์ไปยังฟังก์ชัน
  • start_Index คือดัชนีที่จะใช้ในการดึงสตริงย่อย
  • sub_length ระบุความยาวที่จะคัดลอกสตริงจาก start_Index โดยความยาวนี้จะวัดเป็นจำนวนอักขระ ฟังก์ชันจะส่งคืนค่า extracted substring.

ดัชนีเริ่มต้นนับจากศูนย์ ดังนั้นอักขระตัวแรกของสตริงจึงอยู่ที่ตำแหน่ง 0 แทนที่จะเป็นตำแหน่ง 1

เมื่อกำหนดไวยากรณ์แล้ว ตัวอย่างต่อไปนี้จะแสดงวิธีใช้งานเมธอด Substring ภายในแอปพลิเคชันคอนโซล

ตัวอย่าง

ขั้นตอนที่ 1) สร้างแอปพลิเคชันคอนโซลใหม่

ขั้นตอนที่ 2) เพิ่มโค้ดต่อไปนี้ลงไป:

Module Module1
    Sub Main()

        Dim st As String = "Guru99"

        Dim subst As String = st.Substring(0, 4)

        Console.WriteLine("The substring is: {0}", subst)

        Console.ReadKey()
    End Sub

End Module

ขั้นตอนที่ 3) คลิกปุ่ม Start จากแถบเครื่องมือเพื่อเรียกใช้โค้ด คุณควรจะได้ผลลัพธ์ดังต่อไปนี้:

ตัวอย่างผลลัพธ์การใช้ Substring ใน VB.Net

เราได้ใช้โค้ดดังต่อไปนี้:

ตัวอย่างโค้ด Substring ใน VB.Net

คำอธิบายของ Code:

  1. การสร้างโมดูลชื่อ Module1
  2. เริ่มขั้นตอนย่อยหลัก
  3. กำหนดตัวแปรสตริงชื่อ st และกำหนดค่าให้กับมัน Guru99 ต่อ 1
  4. กำหนดตัวแปรสตริงชื่อ 'subst' ให้เป็นสตริงย่อยของสตริง 'st' โดยเริ่มจากดัชนี 0 และมีความยาว 4 ตัวอักษร
  5. พิมพ์ข้อความและสตริงย่อยด้านบนบนคอนโซล
  6. การหยุดหน้าต่างคอนโซลชั่วคราวชั่วขณะหนึ่งเพื่อรอให้ผู้ใช้ดำเนินการเพื่อปิดหน้าต่างดังกล่าว
  7. สิ้นสุดขั้นตอนย่อยหลัก
  8. จุดสิ้นสุดของโมดูล

อาร์กิวเมนต์หนึ่ง

จะเกิดอะไรขึ้นถ้าเราส่งผ่านอาร์กิวเมนต์เดียวไปยังฟังก์ชัน? ฟังก์ชันจะคัดลอกข้อมูลทั้งหมดในสตริงที่เริ่มต้นจากดัชนีนั้น สิ่งที่เกิดขึ้นคือฟังก์ชัน Substring จะคัดลอกข้อมูลสตริงทั้งหมดที่ดัชนีนั้นรวมทั้งข้อมูลที่ตามหลังดัชนีนั้นภายใน ตัวอย่างเช่น:

Module Module1
    Sub Main()

        Dim st As String = "Guru99"

        Dim subst As String = st.Substring(4)

        Console.WriteLine("The substring is: {0}", subst)


        Console.ReadKey()

    End Sub

End Module

คลิกปุ่มเริ่มเพื่อรันโค้ด ผลลัพธ์ควรเป็นดังนี้:

VB.Net การตัดสตริงด้วยอาร์กิวเมนต์เดียว

ฟังก์ชัน Substring ส่งคืนค่า 99 เราส่งค่าพารามิเตอร์ 4 ให้กับฟังก์ชัน ซึ่งหมายความว่าฟังก์ชันจะเริ่มต้นการทำงานtract คือสตริงย่อยตั้งแต่ตัวอักษรที่ดัชนี 4 จนถึงท้ายสตริง 9 คือตัวอักษรที่ดัชนี 4 ของสตริง Guru99 ดังนั้นอดีตtracเรื่องราวเริ่มต้นจากตรงนั้น

นอกจากจะตัดจากดัชนีเดียวแล้ว เมธอด Substring ยังสามารถกำหนดเป้าหมายไปยังอักขระที่อยู่ตรงกลางของสตริงได้อีกด้วย

ตัวละครกลาง

นอกจากนี้ เรายังสามารถรับอักขระตรงกลางของสตริงที่ต้องการได้อีกด้วย ในกรณีนี้ เราเพียงแค่ต้องระบุดัชนีเริ่มต้นและความยาวของสตริงที่ต้องการเท่านั้น ในตัวอย่างต่อไปนี้ เราจะรับสตริงย่อยของสตริงที่ระบุจากดัชนี 2 และสตริงจะมีความยาว 2 อักขระ:

Module Module1
    Sub Main()

        Dim st As String = "Guru99"

        Dim subst As String = st.Substring(2, 2)

        Console.WriteLine("The substring is: {0}", subst)


        Console.ReadKey()

    End Sub

End Module

คลิกปุ่ม Start จากแถบเครื่องมือเพื่อรันโค้ด คุณจะได้รับผลลัพธ์ดังต่อไปนี้:

VB.Net สตริงย่อย อักขระกลาง

ในตัวอย่างข้างต้น ฟังก์ชัน Substring ส่งคืนค่า ru เราส่งพารามิเตอร์ (2, 2) ไปยังฟังก์ชัน เลข 2 ตัวแรกสั่งให้ฟังก์ชันเริ่มต้นการวนซ้ำtracการเลือกสตริงย่อยจากดัชนี 2 ในขณะที่เลข 2 ตัวที่สองสั่งให้ฟังก์ชันส่งคืนสตริงย่อยที่มีความยาวเพียง 2 ตัวอักษรเท่านั้น ซึ่งหมายความว่า extracการแยกส่วนย่อยของสตริงควรเริ่มต้นจากองค์ประกอบที่ตำแหน่งดัชนี 2 ของสตริง Guru99 ซึ่งก็คือ r เนื่องจากสตริงย่อยที่ส่งคืนควรมีความยาวเพียง 2 ตัวอักษรเท่านั้น ตัวอย่างtraction จะไม่ผ่านตัว 'u' ดังนั้นจึงคืนค่าเป็น 'ru'

หนึ่งชาร์

เราสามารถใช้ฟังก์ชัน Substring เพื่อรับอักขระตัวเดียวจากสตริงได้ ในกรณีดังกล่าว คุณจำเป็นต้องทำการจัดสรร แต่สามารถเข้าถึงอักขระได้โดยตรง วิธีนี้เร็วกว่าเล็กน้อย ตัวอย่างต่อไปนี้จะสาธิตสองวิธีที่เราจะทำได้:

Module Module1
    Sub Main()

        Dim st As String = "Guru99"

        Dim mid1 As Char = st(1)
        Console.WriteLine(mid1)

        Dim mid2 As String = st.Substring(1, 1)

        Console.WriteLine(mid2)

        Console.ReadKey()

    End Sub

End Module

คลิกปุ่ม Start เพื่อรันโค้ด คุณจะได้รับผลลัพธ์ดังต่อไปนี้:

การแสดงผลสตริงย่อยด้วยอักขระตัวเดียวใน VB.Net

เราได้ใช้โค้ดดังต่อไปนี้:

รหัสย่อยสตริงตัวอักษรเดี่ยวใน VB.Net

คำอธิบายของ Code:

  1. การสร้างโมดูลชื่อ Module1
  2. เริ่มขั้นตอนย่อยหลัก
  3. กำหนดตัวแปรสตริงชื่อ st และกำหนดค่าให้กับมัน Guru99 ต่อ 1
  4. การกำหนดตัวแปรสตริงชื่อ mid1 และรับอักขระที่ดัชนี 1 ของ String st อักขระนี้จะถูกกำหนดให้กับตัวแปร mid1
  5. การพิมพ์อักขระด้านบนบนคอนโซล
  6. การกำหนดตัวแปรสตริงชื่อ mid2 และรับอักขระที่ดัชนี 1 ที่มีความยาว 1 จาก String st ความยาว 1 หมายความว่าจะส่งกลับอักขระเดิมที่ดัชนีเริ่มต้น การนับเริ่มต้นจากดัชนีเริ่มต้นที่คุณระบุ อักขระนี้จะถูกกำหนดให้กับตัวแปร mid2
  7. การพิมพ์อักขระด้านบนบนคอนโซล
  8. การหยุดหน้าต่างคอนโซลชั่วคราวชั่วขณะหนึ่งเพื่อรอให้ผู้ใช้ดำเนินการเพื่อปิดหน้าต่างดังกล่าว
  9. สิ้นสุดขั้นตอนย่อยหลัก
  10. จุดสิ้นสุดของโมดูล

เมื่อคุณรู้สึกสบายใจแล้วtracในการแยกสตริงย่อย การเรียนรู้วิธีจัดการกับข้อผิดพลาดที่อาจเกิดขึ้นจากเมธอดนี้จึงเป็นสิ่งสำคัญ

ข้อผิดพลาดเกี่ยวกับสตริงย่อยที่พบบ่อยและวิธีหลีกเลี่ยง

เมธอด Substring มีข้อจำกัดที่เข้มงวดเกี่ยวกับค่าที่คุณส่งเข้าไป หากค่าที่ส่งเข้าไปอยู่นอกขอบเขตของสตริง VB.Net จะโยนข้อยกเว้น ArgumentOutOfRangeException และหยุดโปรแกรมขณะทำงาน การเข้าใจกฎเหล่านี้จะช่วยให้คุณหลีกเลี่ยงข้อผิดพลาดทั่วไปนี้ได้

วิธีการนี้จะทำให้เกิดข้อผิดพลาดในสามสถานการณ์:

  • ค่า start_Index เป็นตัวเลขติดลบ
  • ค่า start_Index จะมากกว่าความยาวของสตริง
  • ผลรวมของ start_Index และ sub_length ชี้เลยจุดสิ้นสุดของสตริง

ข้อผิดพลาดที่พบบ่อยคือการใช้ผลลัพธ์ของฟังก์ชัน IndexOf โดยไม่ตรวจสอบก่อน เมื่อ IndexOf ไม่พบอักขระ มันจะคืนค่า -1 และการส่งค่า -1 ไปยัง Substring จะทำให้เกิดข้อยกเว้น โค้ดต่อไปนี้จะป้องกันข้อผิดพลาดนั้น:

Module Module1
    Sub Main()

        Dim st As String = "Guru99"
        Dim pos As Integer = st.IndexOf("9")

        If pos >= 0 Then
            Dim subst As String = st.Substring(pos)
            Console.WriteLine(subst)
        Else
            Console.WriteLine("Character not found")
        End If

        Console.ReadKey()
    End Sub

End Module

การตรวจสอบดัชนีก่อนเรียกใช้ฟังก์ชันจะช่วยให้แอปพลิเคชันของคุณทำงานได้อย่างราบรื่น แม้ว่าสตริงอินพุตจะไม่มีอักขระที่คุณคาดหวังก็ตาม

การรับสตริงย่อยก่อนหรือหลังอักขระ

งานทั่วไปอย่างหนึ่งคือ...tracการแยกข้อความที่ปรากฏก่อนหรือหลังอักขระเฉพาะ เช่น การแยกที่อยู่อีเมลที่เครื่องหมาย @ VB.Net ไม่มีฟังก์ชันเฉพาะสำหรับสิ่งนี้ แต่คุณสามารถใช้ IndexOf ร่วมกับ Substring เพื่อให้ได้ผลลัพธ์ดังกล่าวได้

ข้อความก่อนอักขระ: เรียกใช้ IndexOf เพื่อค้นหาตัวอักษร จากนั้นส่งค่าดัชนีนั้นเป็นความยาวให้กับ Substring:

Module Module1
    Sub Main()

        Dim email As String = "guru99@example.com"
        Dim position As Integer = email.IndexOf("@")

        Dim namePart As String = email.Substring(0, position)
        Console.WriteLine(namePart)

        Console.ReadKey()
    End Sub

End Module

โค้ดนี้จะพิมพ์ guru99 ซึ่งเป็นส่วนหนึ่งของสตริงที่อยู่ก่อนเครื่องหมาย @

ข้อความหลังตัวอักษร: เพิ่มค่าดัชนีขึ้น 1 และปล่อยให้ฟังก์ชัน Substring ทำงานจนถึงจุดสิ้นสุดของสตริง:

Dim domainPart As String = email.Substring(position + 1)
Console.WriteLine(domainPart)

ผลลัพธ์ที่ได้คือ example.com เมื่อตัวอักษรปรากฏมากกว่าหนึ่งครั้ง ให้ใช้ LastIndexOf แทน IndexOf เพื่อเริ่มจากตำแหน่งที่ปรากฏครั้งสุดท้ายแทนที่จะเป็นครั้งแรก

ความแตกต่างระหว่าง Substring กับ Left, Right และ Mid Functions

Visual Basic สืบทอดฟังก์ชันสตริงดั้งเดิมสามฟังก์ชันจากเวอร์ชันก่อนหน้า ได้แก่ Left, Right และ Mid ฟังก์ชันเหล่านี้อยู่ในไฟล์ .txt Microsoftเนมสเปซ .VisualBasic อาจให้ความรู้สึกคุ้นเคยมากกว่าสำหรับนักพัฒนาที่มาจาก VB แบบดั้งเดิม

  • ซ้าย(สตริง, n) ส่งคืนอักขระ n ตัวแรกของสตริง
  • ขวา(สตริง, n) ส่งคืนอักขระ n ตัวสุดท้ายของสตริง
  • กลาง (สตริง, จุดเริ่มต้น, ความยาว) ส่งคืนส่วนหนึ่งจากตำแหน่งเริ่มต้น คล้ายกับฟังก์ชัน Substring

ความแตกต่างที่สำคัญคือวิธีการนับตำแหน่ง ฟังก์ชัน Mid เริ่มนับจาก 1 ดังนั้นอักขระตัวแรกจะอยู่ที่ตำแหน่งที่ 1 ในขณะที่เมธอด Substring เริ่มนับจาก 0 Substring เป็นวิธีการมาตรฐานของ .NET และทำงานเหมือนกันในทุกภาษาของ .NET ดังนั้นจึงเป็นตัวเลือกที่แนะนำสำหรับโค้ดใหม่ ควรสงวน Left, Right และ Mid ไว้สำหรับการบำรุงรักษาโปรเจกต์ Visual Basic เก่าๆ

คำถามที่พบบ่อย

ใช่แล้ว เมธอด Substring นั้นเริ่มต้นจากศูนย์ ดังนั้นอักขระตัวแรกของสตริงจะอยู่ที่ดัชนี 0 ตัวที่สองอยู่ที่ดัชนี 1 และต่อไปเรื่อยๆ การนับจากศูนย์นั้นสำคัญมากเมื่อคุณคำนวณตำแหน่งเริ่มต้น

ไม่ สตริงใน VB.Net นั้นไม่สามารถเปลี่ยนแปลงได้ ดังนั้นเมธอด Substring จึงไม่เปลี่ยนแปลงสตริงเดิมเลย มันจะคืนค่าสตริงใหม่ที่มีเนื้อหาเดิมtracตัวอักษรจะถูกแปลงเป็นสตริงต้นฉบับ ในขณะที่สตริงต้นฉบับยังคงค่าเดิมไว้ไม่เปลี่ยนแปลง

สตริงย่อย เช่นtracts คือส่วนต่อเนื่องของสตริงโดยใช้ดัชนีและความยาว แยก ฟังก์ชันนี้จะแบ่งสตริงหลักออกเป็นสตริงย่อยๆ หลายสตริง โดยใช้ตัวคั่น เช่น คอมมาหรือช่องว่าง ใช้ฟังก์ชัน Split สำหรับลิสต์ และ Substring สำหรับส่วนย่อยของสตริง

การส่งค่าความยาวเป็น 0 จะคืนค่าเป็นสตริงว่าง (“”) ไม่ใช่ Nothing การเรียกใช้ฟังก์ชันนี้ถูกต้องและจะไม่เกิดข้อผิดพลาด ตราบใดที่ดัชนีเริ่มต้นยังคงอยู่ภายในขอบเขตของสตริง

เมธอด Substring จะเก็บส่วนของสตริงที่คุณระบุและทิ้งส่วนที่เหลือ ส่วนเมธอด Remove จะทำตรงกันข้าม คือจะลบอักขระที่เริ่มต้นจากดัชนีที่กำหนดและส่งคืนสตริงที่เหลืออยู่ การดำเนินการทั้งสองนี้เสริมกัน

ใช่แล้ว ช่องว่าง แท็บ และเครื่องหมายวรรคตอนแต่ละอย่างนับเป็นหนึ่งตัวอักษรเมื่อเมธอด Substring คำนวณดัชนีเริ่มต้นและความยาว ทุกตำแหน่งในสตริง รวมถึงช่องว่าง จะถูกนับรวมด้วย ไม่ใช่แค่ตัวอักษรที่มองเห็นได้เท่านั้น

ใช่. นักบิน GitHub ใน Visual Studio 2026 จะแปลงความคิดเห็นภาษาอังกฤษธรรมดา เช่น ex เป็นความคิดเห็นภาษาอังกฤษธรรมดาtracแปลงข้อความก่อนเครื่องหมายจุลภาคให้เป็นการเรียกใช้ Substring ที่ใช้งานได้โดยใช้ IndexOf ตรวจสอบดัชนีที่สร้างขึ้นเสมอเพื่อให้แน่ใจว่ายังคงอยู่ในช่วงที่กำหนด

ใช่ Visual Studio 2026 จับคู่ GitHub Copilot กับ อินเทลลิCode เพื่อแจ้งเตือนดัชนีที่อาจอยู่นอกช่วง แนะนำอาร์กิวเมนต์ที่ถูกต้อง และทำการเรียกใช้ Substring ให้เสร็จสมบูรณ์ขณะที่คุณพิมพ์ helping คุณต้องป้องกันข้อผิดพลาด ArgumentOutOfRangeException ก่อนที่จะรันโปรแกรม

สรุปโพสต์นี้ด้วย: