การแปลง Enums เป็นค่าที่อ่านได้ของมนุษย์ใน C#

Enums หรือที่เรียกว่า การระบุค่า เป็น “คลาส” พิเศษใน C# ที่แทนกลุ่มค่าคงที่ พวกมันถูกใช้อย่างแพร่หลายเพื่อกำหนดประเภทตัวแปรที่สามารถเก็บชุดค่าที่กำหนดไว้ล่วงหน้า อย่างไรก็ตาม เมื่อทำงานกับ enums การแปลงชื่อที่เข้ารหัสเป็นสตริงที่อ่านได้ของมนุษย์อาจเป็นเรื่องท้าทาย โพสต์นี้จะกล่าวถึงปัญหานี้และเสนอวิธีแก้ไขที่ตรงไปตรงมา

ความท้าทายของการอ่าน Enum

ลองนึกภาพว่าคุณมี enum ที่กำหนดไว้ดังนี้:

public enum SampleEnum
{
    ThisIsValueA,
    ThisIsValueB,
    AnotherValue
}

เมื่อใช้ enum นี้ ถ้าคุณต้องการแสดง ThisIsValueA ในลักษณะที่เป็นมิตรต่อผู้ใช้ในแอปพลิเคชันของคุณ คุณคงจะต้องการให้มันปรากฏเป็น “This is Value A” ความท้าทายมาจากการแปลงแบบอัตโนมัติของการตั้งชื่อแบบ camel case เหล่านี้ให้เป็นข้อความที่อ่านได้อย่างชัดเจน

วิธีแก้ปัญหา: วิธี Wordify ง่ายๆ

เพื่อแปลงค่า enum เป็นสตริงที่อ่านได้ของมนุษย์ เราสามารถใช้วิธีที่เรียกว่า Wordify วิธีนี้รับสตริงที่ส่งเข้ามาในรูปแบบ PascalCase (ซึ่งเป็นวิธีที่ใช้ในการกำหนดชื่อ enum โดยทั่วไป) และแยกคำด้วยช่องว่างในจุดที่จำเป็น

นี่คือลำดับขั้นตอน:

ขั้นตอนที่ 1: นำเข้าวิธี Wordify

คุณสามารถนำเข้ารูปแบบ Wordify ลงในโค้ดของคุณได้ดังนี้:

using System.Text.RegularExpressions;

public static string Wordify(string pascalCaseString)
{            
    Regex regex = new Regex("(?<=[a-z])(?<x>[A-Z])|(?<y>.)(?<x>[A-Z])(?=[a-z])");
    return regex.Replace(pascalCaseString, " ${x}");
}

คำอธิบาย:

  • รูปแบบ Regex: รูปแบบ regex ทำงานโดยการค้นหาตัวอักษรใหญ่ที่มาก่อนหรือหลังตัวอักษรเล็ก โดยมั่นใจว่าสัญลักษณ์ย่อ (กลุ่มของตัวอักษรใหญ่) ยังคงอยู่เป็นปกติ
  • คำสั่งคืนค่า: วิธีนี้จะแทนที่การค้นหาเหล่านั้นด้วยช่องว่างตามด้วยตัวอักษรใหญ่ที่ตรงกัน ซึ่งจะแยกออกเป็นคำที่แตกต่างกัน

ขั้นตอนที่ 2: ใช้คำสั่ง Wordify

เพื่อดูวิธีการทำงาน คุณสามารถรันโค้ดต่อไปนี้:

Console.WriteLine(Wordify(SampleEnum.ThisIsValueA.ToString()));

ผลลัพธ์:

บรรทัดโค้ดนี้จะให้ผลลัพธ์ว่า:

"This Is Value A"

ประโยชน์ของการใช้ Wordify

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

สรุป

การแปลง enums เป็นค่าที่อ่านได้ของมนุษย์ใน C# ไม่จำเป็นต้องซับซ้อน ด้วยการนำเข้าวิธี Wordify คุณสามารถแปลงสตริง PascalCase ใดๆ ให้เป็นรูปแบบที่เป็นมิตรต่อผู้ใช้ในไม่กี่บรรทัดของโค้ด เพิ่มความชัดเจนและความสามารถในการใช้งานในแอปพลิเคชันของคุณ ลองลองนำวิธีนี้ไปใช้ในโครงการถัดไปของคุณเพื่อทำให้การแสดงค่า enum ต่อผู้ใช้ง่ายขึ้น