Sử dụng String.Empty (hằng số chuỗi rỗng "") kết hợp StringBuilder.Replace() để xóa khoảng trắng. String.Empty rõ ý định hơn "" và tránh cấp phát chuỗi mới.
Ví dụ
StringBuilder str = new StringBuilder("Tom Hanks");
str.Replace(" ", String.Empty); // "TomHanks"
Mã nguồn hoàn chỉnh
using System;
using System.Text;
class Demo
{
static void Main()
{
StringBuilder str = new StringBuilder("Tom Hanks");
Console.WriteLine(str.ToString()); // Tom Hanks
str.Replace(" ", String.Empty);
Console.WriteLine(str.ToString()); // TomHanks
Console.ReadLine();
}
}
Kết quả
Tom Hanks
TomHanks
String.Empty vs ""
| Đặc điểm | String.Empty | "" |
|---|---|---|
| Ý nghĩa | Rõ ràng: chuỗi rỗng cố định | Literal rỗng |
| Hiệu suất | Singleton (cùng reference) | Có thể tạo mới (trước C# 7, compiler tối ưu) |
| Độ đọc | Tốt hơn (tự tài liệu) | Thông thường |
| Compile-time const | Có | Có |
Các cách xóa khoảng trắng
// 1. StringBuilder (mutable, hiệu quả cho nhiều replace)
sb.Replace(" ", String.Empty);
// 2. String (immutable, tạo chuỗi mới)
str = str.Replace(" ", String.Empty);
// 3. Xóa tất cả whitespace (tab, newline...)
str = Regex.Replace(str, @"\s+", String.Empty);
// 4. LINQ giữ thứ tự
str = new string(str.Where(c => !char.IsWhiteSpace(c)).ToArray());
Lưu ý
String.Emptylàreadonlystatic field, cùng reference trên toàn app.- Trong C# hiện đại,
""cũng được compiler tối ưu thành singleton. StringBuilder.Replacesửa đổi in-place - hiệu quả cho chuỗi lớn, nhiều lần replace.