Bài tập - Điều tra kiến thức cơ bản về định dạng chuỗi
- 20 phút
Trong đơn vị này, bạn tìm hiểu các phương pháp để định dạng chuỗi để hiển thị hiệu quả, đặc biệt là đối với các trường hợp sử dụng nhiều biến.
Chuẩn bị môi trường mã hóa của bạn
Mô-đun này bao gồm các hoạt động thực hành hướng dẫn bạn qua quy trình xây dựng và chạy mã minh họa. Bạn được khuyến khích hoàn thành các hoạt động này bằng cách sử dụng Visual Studio Code làm môi trường phát triển của mình. Sử dụng Visual Studio Code cho các hoạt động này giúp bạn dễ dàng viết và chạy mã hơn trong môi trường nhà phát triển được các chuyên gia trên toàn thế giới sử dụng.
Ghi
Nếu bạn đã hoàn thành các mô-đun Microsoft Learn khác trong chuỗi C# này, bạn có thể đã tạo một thư mục dự án cho các mẫu mã. Nếu trường hợp này xảy ra, bạn có thể bỏ qua phần sau đây của các bước và xóa mã trong tệp Project.cs được sử dụng cho bài tập trước đó.
Mở Mã Visual Studio. Bạn có thể sử dụng menu Bắt đầu của Windows (hoặc tài nguyên tương đương cho một HĐH khác) để mở Mã Visual Studio.
Trên menu Mã Visual Studio tệp, chọn mở thư mục.
Trong hộp thoại mở thư, dẫn hướng đến thư mục Trên máy tính chạy Windows. Nếu bạn có một vị trí thư mục khác nơi bạn giữ các dự án mã, bạn có thể sử dụng vị trí thư mục đó để thay thế. Đối với khóa đào tạo này, điều quan trọng là phải có một vị trí dễ định vị và ghi nhớ.
Trong hộp Mở Thư mục, hãy chọn Chọn Thư mục. Nếu bạn thấy một hộp thoại bảo mật hỏi xem bạn có tin cậy tác giả hay không, hãy chọn Có.
Trên menu Thiết bị đầu cuối Visual Studio, hãy chọn thiết bị đầu cuối. Lưu ý rằng dấu nhắc lệnh trong pa-nen Đầu cuối sẽ hiển thị đường dẫn thư mục cho thư mục hiện tại. Ví dụ:
C:\Users\someuser\Desktop>Tại dấu nhắc lệnh Terminal, để tạo ứng dụng bảng điều khiển mới trong thư mục được chỉ định, hãy nhập dotnet bảng điều khiển mới -o ./CsharpProjects/TestProject , rồi nhấn Enter. Lệnh .NET CLI này sử dụng mẫu chương trình .NET để tạo dự án ứng dụng bảng điều khiển C# mới trong vị trí thư mục được chỉ định. Lệnh này tạo ra các thư mục CsharpProjects và TestProject cho bạn và sử dụng TestProject làm tên của tệp
.csprojnày.Trong pa nen EXPLORER, bung rộng CsharpProjects mục. Bạn sẽ thấy thư mục TestProject và hai tệp, một tệp chương trình C# có tên Program.cs và một tệp dự án C# có tên là TestProject.csproj.
Trong pa nen EXPLORER, để xem tệp mã của bạn trong panel Trình soạn thảo, hãy chọn Program.cs.
Xóa bỏ các dòng mã hiện có. Bạn sử dụng dự án bảng điều khiển C# này để tạo, xây dựng và chạy mẫu mã trong mô-đun này.
Đóng pa-nen Đầu cuối.
Định dạng Tổ hợp là gì?
Định dạng tổ hợp sử dụng chỗ dành sẵn được đánh số trong một chuỗi. Tại thời điểm chạy, mọi thứ bên trong dấu ngoặc nhọn được giải quyết thành một giá trị cũng được truyền vào dựa trên vị trí của chúng.
Ví dụ về định dạng tổ hợp này sử dụng phương pháp dựng sẵn Format() trên từ khóa string kiểu dữ liệu. Cập nhật mã của bạn trong Trình soạn thảo Mã Visual Studio như sau:
string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);
Nếu bạn chạy mã này, bạn quan sát đầu ra sau đây.
Hello World!
Có một vài điều quan trọng cần lưu ý về mã này.
- Các kiểu dữ liệu và biến số của kiểu dữ liệu đã cho có "phương pháp trợ giúp" tích hợp sẵn để giúp một số tác vụ nhất định trở nên dễ dàng.
- Chuỗi ký tự tạo thành
"{0} {1}!"một mẫu, các phần trong đó được thay thế tại thời gian chạy. - Mã thông
{0}báo được thay thế bằng đối số đầu tiên sau mẫu chuỗi, nói cách khác là giá trị của biến sốfirst. - Mã thông
{1}báo được thay thế bằng đối số thứ hai sau mẫu chuỗi, nói cách khác là giá trị của biến sốsecond.
Ghi
Bạn có thể nghĩ rằng thật kỳ lạ khi bắt đầu với số 0. Trên thực tế điều này là rất phổ biến trong phát triển phần mềm. Bất cứ khi nào có một chuỗi các mục có thể được xác định bằng cách sử dụng một số, đánh số thường sẽ bắt đầu bằng 0.
Cập nhật mã của bạn như sau:
string first = "Hello"; string second = "World"; Console.WriteLine("{1} {0}!", first, second); Console.WriteLine("{0} {0} {0}!", first, second);Lưu tệp mã của bạn, sau đó sử dụng Mã Visual Studio để chạy mã của bạn. Bạn sẽ thấy đầu ra sau đây:
World Hello! Hello Hello Hello!
Một vài quan sát về các ví dụ sau:
- Đối với tuyên bố đầu
Console.WriteLine()tiên, quan sát thấy rằng các mã thông báo có thể được sắp xếp theo bất kỳ thứ tự nào. Mã mẫu có trước{1}.{0} - Đối với tuyên bố
Console.WriteLine()thứ hai, quan sát thấy rằng các mã thông báo có thể được tái sử dụng với ba trường hợp của{0}. Ngoài ra, đối số biến số thứ hai,second, không được sử dụng. Tuy nhiên, mã vẫn chạy mà không có lỗi.
Nội suy chuỗi là gì?
Nội suy chuỗi là một kỹ thuật giúp đơn giản hóa định dạng tổng hợp.
String.Format()
Console.WriteLine()Thay vì sử dụng mã thông báo được đánh số và bao gồm giá trị ký tự hoặc tên biến số trong danh sách các đối số tới hoặc , bạn chỉ cần sử dụng tên biến số bên trong dấu ngoặc nhọn.
Để một chuỗi được nội suy, bạn phải đặt tiền tố cho chuỗi đó với chỉ
$thị. Bây giờ, hãy tạo các ví dụ tương tự từ trước bằng cách sử dụng nội suy chuỗi thay vì định dạng tổng hợp. Cập nhật mã của bạn như sau:string first = "Hello"; string second = "World"; Console.WriteLine($"{first} {second}!"); Console.WriteLine($"{second} {first}!"); Console.WriteLine($"{first} {first} {first}!");Lưu tệp mã của bạn, sau đó sử dụng Mã Visual Studio để chạy mã của bạn. Bạn sẽ thấy đầu ra sau đây:
Hello World! World Hello! Hello Hello Hello!
Ghi
Nếu bạn xem các ví dụ về mã trong sách và trực tuyến, bạn có thể thấy cả định dạng tổ hợp và nội suy chuỗi được sử dụng, nhưng thông thường, bạn nên chọn nội suy chuỗi.
Định dạng tiền tệ
Định dạng tổ hợp và nội suy chuỗi có thể được dùng để định dạng các giá trị để hiển thị cho một ngôn ngữ và văn hóa cụ thể. Trong ví dụ sau đây, bộ :C xác định định dạng tiền tệ được sử dụng để trình price bày các biến discount số dưới dạng tiền tệ. Cập nhật mã của bạn như sau:
decimal price = 123.45m;
int discount = 50;
Console.WriteLine($"Price: {price:C} (Save {discount:C})");
Nếu bạn đã thực hiện mã này trên máy tính có ngôn ngữ hiển thị trong Windows được đặt là "Tiếng Anh (Hoa Kỳ)", bạn sẽ thấy đầu ra sau đây.
Price: $123.45 (Save $50.00)
Lưu ý cách thêm vào :C mã thông báo bên trong dấu ngoặc nhọn sẽ định dạng số dưới dạng tiền tệ bất kể bạn sử dụng hay intdecimal.
Ghi
Điều gì xảy ra nếu quốc gia/khu vực và ngôn ngữ của bạn không được biết đến? Nếu bạn chạy mã trước đó trong Trình soạn thảo .NET "trong trình duyệt", chẳng hạn như tại TrydotNet , bạn sẽ thấy đầu ra sau: Price: ¤123.45 (Save ¤50.00). Ký hiệu này ¤ được sử dụng thay cho biểu tượng tiền quốc gia/khu vực của bạn. Đây là một ký hiệu chung dùng để biểu thị "tiền tệ" bất kể loại tiền tệ. Bạn thấy ký hiệu này trong Trình soạn thảo .NET vì nó bỏ qua vị trí hiện tại của bạn.
Cách thức quốc gia/khu vực và ngôn ngữ của người dùng ảnh hưởng đến định dạng chuỗi
Điều gì sẽ xảy ra nếu bạn thực thi mã trước đó trên máy tính ở Pháp đã đặt Ngôn ngữ Hiển thị Windows là Tiếng Pháp? Trong trường hợp đó, bạn sẽ thấy đầu ra sau đây.
Price: 123,45 € (Save 50,00 €)
Lý do cho đầu ra "€" trước đó là tính năng định dạng tiền tệ chuỗi phụ thuộc vào cài đặt máy tính cục bộ cho văn hóa. Trong ngữ cảnh này, thuật ngữ "văn hóa" đề cập đến quốc gia/khu vực và ngôn ngữ của người dùng cuối. Mã văn hóa là một chuỗi năm ký tự mà máy tính sử dụng để xác định vị trí và ngôn ngữ của người dùng cuối. Mã văn hóa đảm bảo một số thông tin nhất định như ngày và tiền tệ có thể được trình bày đúng cách.
Ví dụ:
- mã văn hóa của một người nói tiếng Anh ở Mỹ là
en-US. - mã văn hóa của một người nói tiếng Pháp ở Pháp là
fr-FR. - mã văn hóa của một người nói tiếng Pháp ở Canada là
fr-CA.
Văn hóa ảnh hưởng đến hệ thống viết, lịch được sử dụng, thứ tự sắp xếp chuỗi và định dạng cho ngày và số (như định dạng tiền tệ).
Rất tiếc, hãy đảm bảo rằng mã của bạn hoạt động chính xác trên tất cả các máy tính bất kể ngôn ngữ quốc gia/khu vực hoặc ngôn ngữ của người dùng cuối đang gặp khó khăn. Quá trình này được gọi là bản địa hóa (hoặc toàn cầu hóa). Bản địa hóa phụ thuộc vào nhiều yếu tố không được thảo luận trong mô-đun này, nhưng chỉ đơn giản là cú pháp định dạng chuỗi có thể sử dụng định dạng khác tùy thuộc vào văn hóa của người dùng.
Định dạng số
Khi làm việc với dữ liệu số, bạn có thể muốn định dạng số để dễ đọc bằng cách bao gồm dấu phẩy để phân định hàng nghìn, hàng triệu, hàng tỷ, v.v.
Mã xác N định định dạng số giúp cho các số dễ đọc hơn. Cập nhật mã của bạn như sau:
decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N} units");
Nếu bạn đang xem điều này từ văn hóa en-US , bạn quan sát đầu ra sau đây.
Measurement: 123,456.79 units
Theo mặc định, mã N xác định định dạng số chỉ hiển thị hai chữ số sau dấu thập phân.
Nếu bạn muốn hiển thị chính xác hơn, bạn có thể làm điều đó bằng cách thêm một số sau mã xác định. Mã sau đây sẽ hiển thị bốn chữ số sau dấu thập phân bằng cách sử dụng mã xác N4 định. Cập nhật mã của bạn như sau:
decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N4} units");
Nếu bạn đang xem điều này từ văn hóa en-US , bạn quan sát đầu ra sau đây.
Measurement: 123,456.7891 units
Định dạng tỷ lệ phần trăm
Dùng bộ P xác định định dạng để định dạng tỷ lệ phần trăm và làm tròn đến 2 vị trí thập phân. Thêm một số sau đó để kiểm soát số lượng giá trị được hiển thị sau dấu thập phân. Cập nhật mã của bạn như sau:
decimal tax = .36785m;
Console.WriteLine($"Tax rate: {tax:P2}");
Nếu bạn đang xem điều này từ văn hóa en-US , bạn quan sát đầu ra sau đây.
Tax rate: 36.79%
Kết hợp các phương pháp định dạng
Biến chuỗi có thể lưu trữ các chuỗi được tạo bằng cách sử dụng kỹ thuật định dạng. Trong ví dụ sau đây, số thập phân và kết quả toán học thập phân được định dạng và lưu trữ trong chuỗi bằng cách sử yourDiscount dụng định dạng tổng hợp.
Cập nhật mã của bạn như sau.
decimal price = 67.55m;
decimal salePrice = 59.99m;
string yourDiscount = String.Format("You saved {0:C2} off the regular {1:C2} price. ", (price - salePrice), price);
Console.WriteLine(yourDiscount);
Nếu bạn đang xem điều này từ văn hóa en-US , bạn quan sát đầu ra sau đây.
You saved $7.56 off the regular $67.55 price.
Bạn có thể kết hợp nhiều chuỗi được định dạng. Xây dựng trên mã trước đó yourDiscount += $"A discount of {(price - salePrice)/price:P2}!"; ghép nối tỷ lệ phần trăm tính toán bằng cách sử dụng nội suy chuỗi thay vì ghép nối chuỗi bằng cách chèn vào mã trên dòng trước Console.WriteLine().
Ghi
Bạn không cần phải sử dụng với String.Format() phương pháp nội suy chuỗi này.
Cập nhật mã của bạn như sau.
decimal price = 67.55m;
decimal salePrice = 59.99m;
string yourDiscount = String.Format("You saved {0:C2} off the regular {1:C2} price. ", (price - salePrice), price);
yourDiscount += $"A discount of {((price - salePrice)/price):P2}!"; //inserted
Console.WriteLine(yourDiscount);
Nếu bạn đang xem đơn vị này từ văn hóa en-US , bạn quan sát đầu ra sau đây.
You saved $7.56 off the regular $67.55 price. A discount of 11.19%!
Tóm tắt
Dưới đây là những thông tin quan trọng nhất từ đơn vị này về định dạng chuỗi:
- Bạn có thể sử dụng định dạng tổ hợp hoặc nội suy chuỗi để định dạng chuỗi.
- Với định dạng tổ hợp, bạn sử dụng mẫu chuỗi chứa một hoặc nhiều mã thông báo thay thế trong biểu mẫu
{0}. Bạn cũng cung cấp một danh sách các đối số khớp với các mã thông báo thay thế dựa trên đơn hàng của chúng. Định dạng tổ hợp hoạt động khi sử dụngstring.Format()hoặcConsole.WriteLine(). - Với nội suy chuỗi, bạn sử dụng một mẫu chuỗi chứa các tên biến số mà bạn muốn thay thế được đặt trong dấu ngoặc nhọn. Sử dụng
$chỉ thị trước mẫu chuỗi để cho biết bạn muốn chuỗi được nội suy. - Định dạng tiền tệ bằng cách dùng một
:Cmã xác định. - Định dạng số bằng cách dùng một
:Nmã xác định. Kiểm soát độ chính xác (số lượng giá trị sau dấu thập phân) bằng cách dùng một số sau giá:Ntrị tương tự{myNumber:N3}. - Định dạng tỷ lệ phần trăm bằng cách dùng
:Pmã xác định định dạng. - Định dạng tiền tệ và số phụ thuộc vào văn hóa của người dùng cuối, một mã năm ký tự bao gồm quốc gia/khu vực và ngôn ngữ của người dùng (theo thiết đặt trên máy tính của họ).