การแปลง 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 ต่อผู้ใช้ง่ายขึ้น