Latihan - Menggabungkan string menggunakan urutan escape karakter
Misalkan Anda telah diminta untuk membuat mockup alat baris perintah yang akan menghasilkan faktur dalam bahasa Inggris dan Jepang. Anda belum perlu membangun fungsionalitas sebenarnya yang menghasilkan faktur. Anda hanya perlu memberikan antarmuka baris perintah kepada pelanggan internal di departemen penagihan untuk persetujuan mereka. Manajer Anda meminta Anda untuk memastikan Anda menambahkan pemformatan untuk memperjelas kemajuan alat saat ini. Manajer Anda juga meminta Anda untuk memberikan instruksi kepada pengguna dari Jepang tentang cara membuat faktur dalam bahasa Jepang.
Latihan - Memformat string harfiah di C#
Dalam latihan ini, Anda akan mempelajari berbagai teknik untuk menampilkan karakter khusus dan menambahkan berbagai jenis pemformatan ke output.
Editor kode C# tersedia untuk digunakan langsung di browser: C# Code Editor. Editor ini menyediakan lingkungan yang ringan untuk menulis, menjalankan, dan menguji kode C# tanpa perlu menginstal perangkat lunak apa pun di komputer lokal Anda.
Urutan escape karakter
Urutan karakter escape adalah instruksi ke runtime untuk menyisipkan karakter khusus yang akan memengaruhi output string Anda. Dalam C#, urutan karakter escape dimulai dengan garis miring \ terbalik diikuti oleh karakter yang Anda kabur. Misalnya, urutan \n akan menambahkan baris baru, dan urutan \t akan menambahkan tab.
Kode berikut menggunakan urutan karakter escape untuk menambahkan baris baru dan tab:
Console.WriteLine("Hello\nWorld!");
Console.WriteLine("Hello\tWorld!");
Jika Anda menjalankan kode, Anda akan melihat output berikut:
Hello
World!
Hello World!
Bagaimana jika Anda perlu memasukkan tanda kutip ganda dalam string harfiah? Jika Anda tidak menggunakan urutan escape karakter, Anda akan membingungkan pengkompilasi karena akan berpikir Anda ingin mengakhiri string sebelum waktunya. Pengkompilasi tidak akan memahami tujuan karakter setelah tanda kutip ganda kedua.
Console.WriteLine("Hello "World"!");
Editor Kode C# akan menempatkan garis berlekuk merah di bawah World. Tetapi jika Anda tetap mencoba menjalankan kode, Anda akan melihat output berikut:
Error summary:
CS1003: Syntax error, ',' expected
CS0103: The name 'World' does not exist in the current context
CS1003: Syntax error, ',' expected
Untuk menangani situasi tersebut \" , gunakan urutan escape:
Console.WriteLine("Hello \"World\"!");
Jika Anda menjalankan kode di atas, Anda akan melihat output berikut:
Hello "World"!
Bagaimana jika Anda perlu menggunakan garis miring terbalik untuk tujuan lain, seperti menampilkan jalur file?
Console.WriteLine("c:\source\repos");
Sayangnya, C# mencadangkan garis miring terbalik untuk urutan escape, jadi jika Anda menjalankan kode, pengompilasi akan menampilkan kesalahan berikut:
(1,22): error CS1009: Unrecognized escape sequence
Masalahnya adalah urutan \s.
\r tidak menghasilkan kesalahan karena merupakan urutan escape yang valid untuk pengembalian pengangkutan. Namun, Anda tidak ingin menggunakan pengembalian pengangkutan dalam konteks ini.
Untuk mengatasi masalah ini, Anda menggunakan \\ untuk menampilkan satu garis miring terbelakang.
Console.WriteLine("c:\\source\\repos");
Melarikan diri dari karakter garis miring belakang menghasilkan output yang Anda maksudkan:
c:\source\repos
Format output menggunakan urutan escape karakter
Pilih semua kode di Editor Kode C#, dan tekan Hapus atau Backspace untuk menghapusnya.
Untuk membuat mockup alat baris perintah, masukkan kode berikut di editor:
Console.WriteLine("Generating invoices for customer \"Contoso Corp\" ... \n"); Console.WriteLine("Invoice: 1021\t\tComplete!"); Console.WriteLine("Invoice: 1022\t\tComplete!"); Console.Write("\nOutput Directory:\t");Sekarang, jalankan kodenya. Anda akan melihat hasil berikut di konsol output:
Generating invoices for customer "Contoso Corp" ... Invoice: 1021 Complete! Invoice: 1022 Complete! Output Directory:
String verbatim harfiah
Harfiah string verbatim akan menyimpan semua spasi kosong dan karakter tanpa perlu menghindari garis miring terbalik. Untuk membuat string verbatim, gunakan arahan @ sebelum string harfiah.
Console.WriteLine(@" c:\source\repos
(this is where your code goes)");
Perhatikan bahwa string mencakup dua baris dan spasi kosong yang dihasilkan oleh instruksi C# ini disimpan dalam output berikut.
c:\source\repos
(this is where your code goes)
Format output menggunakan literal string verbatim
Tambahkan baris kode berikut di bawah kode yang Anda buat sebelumnya:
Console.Write(@"c:\invoices");Sekarang, jalankan kodenya. Anda akan melihat hasil berikut yang menyertakan "Direktori Output":
Generating invoices for customer "Contoso Corp" ... Invoice: 1021 Complete! Invoice: 1022 Complete! Output Directory: c:\invoices
Karakter escape Unicode
Anda juga dapat menambahkan karakter yang dikodekan dalam string harfiah menggunakan urutan escape \u, lalu kode empat karakter yang mewakili beberapa karakter dalam Unicode (UTF-16).
// Kon'nichiwa World
Console.WriteLine("\u3053\u3093\u306B\u3061\u306F World!");
Catatan
Ada beberapa peringatan di sini. Pertama, beberapa konsol seperti Perintah Windows tidak akan menampilkan semua karakter Unicode. Perintah Windows akan menggantikan karakter tersebut dengan karakter tanda tanya sebagai gantinya. Selain itu, contoh yang digunakan di sini adalah UTF-16. Beberapa karakter memerlukan UTF-32 dan oleh karena itu memerlukan urutan escape yang berbeda. Ini merupakan subjek yang rumit, dan modul ini hanya bertujuan untuk menunjukkan kemungkinan yang dapat terjadi kepada Anda. Bergantung pada kebutuhan, Anda mungkin perlu menghabiskan sedikit waktu untuk belajar dan bekerja dengan karakter Unicode di aplikasi Anda.
Format output menggunakan karakter escape unicode
Untuk menyelesaikan mock-up alat baris perintah, Anda akan menambahkan frasa dalam bahasa Jepang yang menerjemahkan: "Untuk menghasilkan faktur Jepang". Kemudian Anda akan menampilkan string harfiah verbatim yang mewakili perintah yang dapat dimasukkan pengguna. Anda juga akan menambahkan beberapa urutan escape untuk pemformatan.
Tambahkan kode berikut ke fungsi Anda:
// To generate Japanese invoices: // Nihon no seikyū-sho o seisei suru ni wa: Console.Write("\n\n\u65e5\u672c\u306e\u8acb\u6c42\u66f8\u3092\u751f\u6210\u3059\u308b\u306b\u306f\uff1a\n\t"); // User command to run an application Console.WriteLine(@"c:\invoices\app.exe -j");Untuk memastikan kode Anda benar, bandingkan dengan yang berikut:
Console.WriteLine("Generating invoices for customer \"Contoso Corp\" ... \n"); Console.WriteLine("Invoice: 1021\t\tComplete!"); Console.WriteLine("Invoice: 1022\t\tComplete!"); Console.Write("\nOutput Directory:\t"); Console.Write(@"c:\invoices"); // To generate Japanese invoices: // Nihon no seikyū-sho o seisei suru ni wa: Console.Write("\n\n\u65e5\u672c\u306e\u8acb\u6c42\u66f8\u3092\u751f\u6210\u3059\u308b\u306b\u306f\uff1a\n\t"); // User command to run an application Console.WriteLine(@"c:\invoices\app.exe -j");Sekarang, jalankan kodenya. Anda akan melihat hasil berikut di konsol output:
Generating invoices for customer "Contoso Corp" ... Invoice: 1021 Complete! Invoice: 1022 Complete! Output Directory: c:\invoices 日本の請求書を生成するには: c:\invoices\app.exe -j
Rekap
Berikut adalah apa yang telah Anda pelajari tentang pemformatan string harfiah sejauh ini:
- Gunakan urutan escape karakter saat Anda perlu menyisipkan karakter khusus ke dalam string harfiah, seperti tab
\t, baris baru\n, atau tanda kutip ganda\". - Gunakan karakter escape untuk garis miring terbalik
\\saat Anda perlu menggunakan garis miring terbalik di semua skenario lainnya. - Gunakan arahan
@untuk membuat harfiah string verbatim yang menyimpan semua pemformatan spasi kosong dan karakter garis miring terbalik dalam string. - Gunakan
\uplus kode empat karakter untuk mewakili karakter Unicode (UTF-16) dalam string. - Karakter Unicode mungkin tidak dicetak dengan benar tergantung pada aplikasi.