Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด ToCharArray() ใน C#

เมธอด String.ToCharArray() ใน C# ใช้คัดลอกตัวอักษรในสตริงเป็นอาเรย์ Unicode character (char array)

ไวยากรณ์ (Syntax)

public char[] ToCharArray();
public char[] ToCharArray(int startIndex, int length);
  • startIndex — ตำแหน่งเริ่มต้นของ substring (zero-based)
  • length — ความยาวของ substring ที่จะคัดลอก
  • คืนค่า char[] ใหม่ที่มีตัวอักษรที่คัดลอกมา

ตัวอย่างที่ 1: แปลงสตริงทั้งหมดเป็น char array

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        string str1 = "Notebook";
        string str2 = "Ultrabook";

        char[] arr1 = str1.ToCharArray();
        char[] arr2 = str2.ToCharArray();

        Console.WriteLine("String1 = " + str1);
        Console.WriteLine("String1 ToUpperInvariant = " + str1.ToUpperInvariant());
        Console.WriteLine("String1 Substring from index 4 = " + str1.Substring(4, 4));
        Console.Write("Character array... String1 = ");
        for (int i = 0; i < arr1.Length; i++)
            Console.Write(" " + arr1[i]);

        Console.WriteLine("\n\nString2 = " + str2);
        Console.WriteLine("String2 ToLowerInvariant = " + str2.ToLowerInvariant());
        Console.WriteLine("String2 Substring from index 2 = " + str2.Substring(0, 5));
        Console.Write("Character array... String2 = ");
        for (int i = 0; i < arr2.Length; i++)
            Console.Write(" " + arr2[i]);
    }
}

ผลลัพธ์

String1 = Notebook
String1 ToUpperInvariant = NOTEBOOK
String1 Substring from index 4 = book
Character array... String1 = N o t e b o o k
String2 = Ultrabook
String2 ToLowerInvariant = ultrabook
String2 Substring from index 2 = Ultra
Character array... String2 = U l t r a b o o k

ตัวอย่างที่ 2: แปลง substring เป็น char array (ระบุ startIndex และ length)

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        string str1 = "Welcome!";
        string str2 = "Thisisit!";

        char[] arr1 = str1.ToCharArray(3, 2); // เริ่ม index 3, ยาว 2 -> "co"
        char[] arr2 = str2.ToCharArray(2, 2); // เริ่ม index 2, ยาว 2 -> "is"

        Console.WriteLine("String1 = " + str1);
        Console.WriteLine("String1 ToUpperInvariant = " + str1.ToUpperInvariant());
        Console.WriteLine("String1 Substring from index 4 = " + str1.Substring(4, 4));
        Console.Write("Character array... String1 = ");
        for (int i = 0; i < arr1.Length; i++)
            Console.Write(" " + arr1[i]);

        Console.WriteLine("\n\nString2 = " + str2);
        Console.WriteLine("String2 ToLowerInvariant = " + str2.ToLowerInvariant());
        Console.WriteLine("String2 Substring from index 2 = " + str2.Substring(0, 5));
        Console.Write("Character array... String2 = ");
        for (int i = 0; i < arr2.Length; i++)
            Console.Write(" " + arr2[i]);
    }
}

ผลลัพธ์

String1 = Welcome!
String1 ToUpperInvariant = WELCOME!
String1 Substring from index 4 = ome!
Character array... String1 = c o
String2 = Thisisit!
String2 ToLowerInvariant = thisisit!
String2 Substring from index 2 = Thisi
Character array... String2 = i s

สรุป

  • ToCharArray() คืน char[] ใหม่ — เป็น deep copy ของตัวอักษรในสตริง
  • อ버โหลดไม่มีพารามิเตอร์: คัดลอกสตริงทั้งหมด
  • Overload มีพารามิเตอร์: คัดลอก substring ที่ระบุ (startIndex, length)
  • แตกต่างจาก CopyTo() ที่ต้องสร้างอาเรย์ปลายทางเอง — ToCharArray() สร้างและคืนอาเรย์ใหม่ให้เลย
  • ใช้เมื่อต้องการ: วนลูปตัวอักษร, จัดการตัวอักษรแต่ละตัว, interop กับ API ที่รับ char[]
  • สำหรับ performance ควรพิจารณา string.AsSpan() (NET Core 2.1+/NET 5+) — ไม่ allocate array ใหม่

ตัวอย่างเพิ่มเติม: วนลูป char array และ LINQ

string s = "Hello World";
char[] chars = s.ToCharArray();

// วนลูป
foreach (char c in chars) Console.Write(c + " ");

// LINK กับ char array
var vowels = chars.Where(c => "aeiouAEIOU".Contains(c)).ToArray();
Console.WriteLine("\nVowels: " + new string(vowels)); // eo o