แบบฝึกหัด - ค้นหาช่องว่างภายในและการจัดแนว
- 12 นาที
เม string.Format() ธอด ถูกใช้เพื่อจัดรูปแบบแบบรวมเช่นในตัวอย่าง:
string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);
อาจดูแปลกเล็กน้อยที่คําหลักที่แสดงถึงชนิดข้อมูลมีวิธีที่คุณสามารถเรียกใช้ในลักษณะเดียวกับที่คุณเรียกใช้วิธีการใน Console ชั้นเรียน ความจริงก็คือ มีวิธีการที่คล้ายกันมากมายใน string ชนิดข้อมูลและสตริงสัญพจน์หรือตัวแปรของสตริงชนิด
นี่คือรายการสั้น ๆ ของหมวดหมู่ของวิธีการที่มีอยู่ภายในเหล่านี้เพื่อให้คุณทราบถึงสิ่งที่เป็นไปได้
- วิธีการที่เพิ่มช่องว่างเพื่อวัตถุประสงค์ในการจัดรูปแบบ (
PadLeft(),PadRight()) - วิธีที่เปรียบเทียบสองสตริงหรืออํานวยความสะดวกในการเปรียบเทียบ (
Trim(),TrimStart(),TrimEnd(),GetHashcode(),Lengthคุณสมบัติ) - วิธีที่ช่วยให้คุณกําหนดสิ่งที่อยู่ภายในสตริง หรือแม้แต่เรียกใช้เฉพาะส่วนของสตริง (
Contains(),StartsWith(), ,EndsWith()Substring()) - วิธีที่เปลี่ยนเนื้อหาของสตริงโดยการแทนที่ การแทรก หรือการเอาส่วนออก (
Replace(),Insert(),Remove()) - วิธีการที่เปลี่ยนสตริงให้เป็นอาร์เรย์ของสตริงหรืออักขระ (
Split(),ToCharArray())
การจัดรูปแบบสตริงโดยการเพิ่มช่องว่างก่อนหรือหลัง
เม PadLeft() ธอด จะเพิ่มช่องว่างทางด้านซ้ายมือของสตริง เพื่อให้จํานวนอักขระทั้งหมดเท่ากับอาร์กิวเมนต์ที่คุณส่ง ในกรณีนี้ คุณต้องการความยาวทั้งหมดของสตริงที่เท่ากับ 12 อักขระ
ลบหรือใช้ตัวดําเนินการข้อคิดเห็นบรรทัด
//เพื่อให้ข้อคิดเห็นเกี่ยวกับรหัสทั้งหมดจากแบบฝึกหัดก่อนหน้านี้อัปเดตโค้ดของคุณใน Visual Studio Code Editor ดังนี้:
string input = "Pad this"; Console.WriteLine(input.PadLeft(12));บนเมนู ไฟล์ของ Visual Studio Code เลือก บันทึก บันทึกไฟล์ Program.cs ก่อนที่จะสร้างหรือเรียกใช้โค้ด
ในแผง EXPLORER หากต้องการเปิดเทอร์มินัลที่ตําแหน่งโฟลเดอร์ TestProject ของคุณ ให้คลิกขวาที่ TestProject จากนั้นเลือก เปิดในเทอร์มินัลแบบรวม แผงเทอร์มินัลควรเปิดขึ้น และควรมีพร้อมท์คําสั่งที่แสดงว่าเทอร์มินัลเปิดอยู่ไปยังตําแหน่งที่ตั้งโฟลเดอร์ TestProject ของคุณ
ที่พร้อมท์คําสั่งเทอร์มินัล เพื่อเรียกใช้โค้ดของคุณ ให้พิมพ์ dotnet run แล้วกด Enter
หมายเหตุ
ถ้าคุณเห็นข้อความ "ไม่พบโครงการที่จะเรียกใช้" ตรวจสอบให้แน่ใจว่าพร้อมท์คําสั่งเทอร์มินัลแสดงตําแหน่งที่ตั้งโฟลเดอร์ TestProject ที่คาดไว้ ตัวอย่าง:
C:\Users\someuser\Desktop\csharpprojects\TestProject>เมื่อคุณเรียกใช้โค้ด คุณสังเกตเห็นอักขระสี่ตัวที่ขึ้นต้นทางด้านซ้ายของสตริงนําความยาวถึง 12 อักขระ
Pad thisหากต้องการเพิ่มช่องว่างหรืออักขระทางด้านขวาของสตริง ให้ใช้
PadRight()วิธีการ แทน 1. อัปเดตโค้ดของคุณใน Visual Studio Code Editor ดังนี้:Console.WriteLine(input.PadRight(12));บันทึกไฟล์โค้ดของคุณ จากนั้นใช้ Visual Studio Code เพื่อเรียกใช้โค้ดของคุณ คุณจะไม่สังเกตอักขระใด ๆ ที่ถูกเพิ่มไปยังส่วนท้ายของสตริง แต่อักขระเหล่านั้นอยู่ที่นั่น
วิธีการโอเวอร์โหลดคืออะไร
ใน C# เมธอดโอเวอร์โหลด เป็นวิธีการอีกเวอร์ชันหนึ่งที่มีอาร์กิวเมนต์ที่แตกต่างกันหรือพิเศษที่ปรับเปลี่ยนฟังก์ชันการทํางานของวิธีการเล็กน้อยเช่นเดียวกับวิธีการที่ PadLeft() โอเวอร์โหลด
คุณยังสามารถเรียกใช้เมธอด เวอร์ชัน โอเวอร์โหลด ครั้งที่สอง และส่งผ่านอักขระที่คุณต้องการใช้แทนช่องว่างได้ ในกรณีนี้ คุณต้องเติมช่องว่างเพิ่มเติมด้วยอักขระเส้นประ
ลบหรือใช้ตัวดําเนินการ
//ข้อคิดเห็นบรรทัดเพื่อแสดงความคิดเห็นรหัสทั้งหมดจากขั้นตอนก่อนหน้าอัปเดตโค้ดของคุณใน Visual Studio Code Editor ดังนี้:
Console.WriteLine(input.PadLeft(12, '-')); Console.WriteLine(input.PadRight(12, '-'));บันทึกไฟล์โค้ดของคุณ จากนั้นใช้ Visual Studio Code เพื่อเรียกใช้โค้ดของคุณ คุณควรเห็นเส้นประสี่เส้นที่ขึ้นต้นทางด้านซ้ายของสตริงที่มีความยาว 12 อักขระ
----Pad this Pad this----
ตอนนี้นําความรู้ใหม่นี้ไปใช้กับสถานการณ์จริงอื่น ๆ
การทํางานกับสตริงที่มีการเติมช่องว่างภายใน
สมมติว่าคุณทํางานให้กับบริษัทที่ประมวลผลการชําระเงินที่ยังสนับสนุนระบบ mainframe แบบดั้งเดิม บ่อยครั้งที่ระบบเหล่านั้นต้องการข้อมูลที่จะป้อนเข้าในคอลัมน์ที่ระบุ ตัวอย่างเช่น จัดเก็บรหัสการชําระเงินในคอลัมน์ 1 ถึง 6 ชื่อของผู้รับเงินในคอลัมน์ 7 ถึง 30 และยอดการชําระเงินในคอลัมน์ 31 ถึง 40 นอกจากนี้ ที่สําคัญคือ จํานวนเงินที่ชําระถูกจัดตําแหน่งให้ชิดขวา
ระบบจะขอให้คุณสร้างแอปพลิเคชันที่จะแปลงข้อมูลในระบบการจัดการฐานข้อมูลเชิงสัมพันธ์เป็นรูปแบบไฟล์เดิม เพื่อให้แน่ใจว่าการรวมทํางานได้อย่างถูกต้องขั้นตอนแรกคือการยืนยันรูปแบบไฟล์โดยให้ตัวอย่างของเอาต์พุตแก่ผู้ดูแลระบบเดิม หลังจากนั้น คุณสร้างงานนี้เพื่อส่งการชําระเงินหลายร้อยหรือหลายพันรายการเพื่อดําเนินการผ่านไฟล์ข้อความ ASCII
เพิ่ม ID การชําระเงินไปยังเอาต์พุต
เพื่อเริ่มต้นใช้งาน พิมพ์ ID การชําระเงินในหกคอลัมน์แรก คุณเลือกข้อมูลการชําระเงินแบบสุ่มบางอย่างที่ควรเพียงพอสําหรับวัตถุประสงค์
ลบหรือใช้ตัวดําเนินการ
//ข้อคิดเห็นบรรทัดเพื่อแสดงความคิดเห็นรหัสทั้งหมดจากขั้นตอนก่อนหน้าอัปเดตโค้ดของคุณใน Visual Studio Code Editor ดังนี้:
string paymentId = "769C"; var formattedLine = paymentId.PadRight(6); Console.WriteLine(formattedLine);นําตัวแปรกลับมาใช้
formattedLineใหม่เพื่อสร้างสตริงเอาต์พุตบันทึกไฟล์โค้ดของคุณ จากนั้นใช้ Visual Studio Code เพื่อเรียกใช้โค้ดของคุณ คุณควรเห็นผลลัพธ์ต่อไปนี้:
769C
มีช่องว่างสองช่องทางด้านขวาที่ไม่สามารถมองเห็นได้ คุณจะยืนยันว่ามีอยู่ในขั้นตอนถัดไป
เพิ่มชื่อผู้รับเงินไปยังเอาต์พุต
ถัดไป คุณเพิ่มชื่อผู้ได้รับเงินเดือนที่สมมุติขึ้น ซึ่งเติมช่องว่างภายในอย่างเหมาะสม
อัปเดตโค้ดของคุณใน Visual Studio Code Editor ดังนี้:
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); Console.WriteLine(formattedLine);ตัว
+=ดําเนินการดําเนินการการเรียงต่อกันของสตริงโดยใช้ค่าก่อนหน้าของตัวแปรformattedLineและเพิ่มค่าใหม่ ซึ่งย่อให้เทียบเท่ากับตัวอย่างโค้ดต่อไปนี้:formattedLine = formattedLine + payeeName.PadRight(24);บันทึกไฟล์โค้ดของคุณ จากนั้นใช้ Visual Studio Code เพื่อเรียกใช้โค้ดของคุณ คุณควรเห็นผลลัพธ์ต่อไปนี้:
769C Mr. Stephen Ortega
อีกครั้งมีพื้นที่ว่างจํานวนหนึ่งหลังจากชื่อของผู้ชําระเงิน นอกจากนี้ ยังมีช่องว่างสองช่องหลังจาก ID การชําระเงินจากขั้นตอนที่ 1
เพิ่มยอดการชําระเงินไปยังเอาต์พุต
ถัดไป ให้เพิ่มจํานวนการชําระเงินสมมุติขึ้น และตรวจสอบให้แน่ใจว่าได้ใช้ PadLeft() เพื่อจัดเอาต์พุตให้ชิดขวา
อัปเดตโค้ดของคุณใน Visual Studio Code Editor ดังนี้:
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; string paymentAmount = "$5,000.00"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); formattedLine += paymentAmount.PadLeft(10); Console.WriteLine(formattedLine);บันทึกไฟล์โค้ดของคุณ จากนั้นใช้ Visual Studio Code เพื่อเรียกใช้โค้ดของคุณ คุณควรเห็นผลลัพธ์ต่อไปนี้:
769C Mr. Stephen Ortega $5,000.00
ผลลัพธ์นี้ค่อนข้างใกล้เคียงกับสิ่งที่คุณเข้าใจผู้ดูแลระบบดั้งเดิมที่กําลังค้นหาอยู่
เพิ่มบรรทัดของตัวเลขด้านบนผลลัพธ์เพื่อยืนยันผลลัพธ์ได้ง่ายยิ่งขึ้น
เนื่องจากเป็นการยากที่จะนับคอลัมน์ที่แน่นอนที่แต่ละองค์ประกอบข้อมูลปรากฏขึ้น คุณสามารถเพิ่มเส้นที่อยู่เหนือผลลัพธ์โดยตรงซึ่งช่วยคุณนับจํานวนคอลัมน์ได้
Console.WriteLine("1234567890123456789012345678901234567890");
อัปเดตโค้ดของคุณใน Visual Studio Code Editor ดังนี้:
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; string paymentAmount = "$5,000.00"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); formattedLine += paymentAmount.PadLeft(10); Console.WriteLine("1234567890123456789012345678901234567890"); Console.WriteLine(formattedLine);บันทึกไฟล์โค้ดของคุณ จากนั้นใช้ Visual Studio Code เพื่อเรียกใช้โค้ดของคุณ คุณควรเห็นเอาต์พุตต่อไปนี้ที่คุณสามารถส่งไปยังผู้ดูแลของระบบเดิมเพื่อยืนยันว่าการผสานรวมใหม่ทํางานได้อย่างถูกต้อง:
1234567890123456789012345678901234567890 769C Mr. Stephen Ortega $5,000.00
ความสําเร็จ!
สรุป
เรื่องสําคัญบางอย่างจากหน่วยนี้
-
stringชนิดข้อมูล สตริงสัญพจน์ และตัวแปรของสตริงชนิดจะใช้วิธีการของผู้ช่วยเหลือจํานวนมากในการจัดรูปแบบ แก้ไข และดําเนินการอื่น ๆ กับสตริง - วิธี
PadLeft()และPadRight()จะเพิ่มช่องว่าง (หรืออักขระอื่น) ไปยังความยาวทั้งหมดของสตริง - ใช้
PadLeft()เพื่อจัดสตริงให้ชิดขวา - บางเมธอดมีการโอเวอร์โหลด ซึ่งหมายความว่ามีหลายเวอร์ชันของวิธีการ ที่มีอาร์กิวเมนต์ที่แตกต่างกันที่ส่งผลกระทบต่อฟังก์ชันการทํางาน
- ตัว
+=ดําเนินการเชื่อมสตริงใหม่ทางด้านขวาไปยังสตริงที่มีอยู่ทางด้านซ้าย