-
11-06-2007, 08:23 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Thao tác với lớp StringBuilder trong lập trình C#
Lớp StringBuilder giúp bạn thao tác nhanh các chuỗi với ít tổn hao bộ nhớ hơn so với lớp String. Trong bài viết này, mình sẽ trình bày những thao tác cơ bản với lớp StringBuilder, với những thao tác này, bạn có thể "đủ xài" trong các ứng dụng của mình rồi.
Do StringBuilder là 1 lớp, nên ta cần tạo 1 thể hiện của lớp này bằng 1 trong các cách sau:
Mã:StringBuilder sb = new StringBuilder(); // bộ khởi tạo với chuỗi sb rỗng
Mã:StringBuilder sb = new StringBuilder(int <chiều dài chuỗi>)//Ví dụ:StringBuilder sb = new StringBuilder(26); // sb rỗng, có chiều dài là 26
Mã:StringBuilder sb = new StringBuilder(<chuỗi khởi tạo>)//Ví dụ:StringBuilder sb = new StringBuilder("Hello world"); // sb = "Hello world"
Mã:StringBuilder sb = new StringBuilder(<chuỗi khởi tạo>,<chiều dài chuỗi>)//Ví dụ:StringBuilder sb = new StringBuilder("Hello world",100);// sb = "Hello world", và nó có chiều dài bằng 100 (trong trường hợp này ta vẫn chưa xài hết dung lượng của nó)
Mã:- sb.Insert(<chỉ mục>,"chuỗi") : chèn 1 chuỗi bất kỳ bắt đầu từ chỉ mục trong chuỗi sb- sb.Remove(<chỉ mục bắt đầu>,<số ký tự cần xóa>)- sb.Replace(<chuỗi con cần thay thế>,<chuỗi con mới>)
Mã:StringBuilder sb = new StringBuilder("Con kien bo tren lung con bo");sb.Insert(12,"nhanh ");//Con kien bo nhanh tren lung con bosb.Remove(23,5);//Con kien bo nhanh tren con bosb.Replace("con bo","con trau");//Con kien bo nhanh tren con trausb.AppendFormat(" voi van toc {0} m/s",1);//Con kien bo nhanh tren con trau voi van toc 1 m/s
Ví dụ:
Mã://sb = "Con kien bo nhanh tren con trau" vitri = sb.ToString().IndexOf("kien"); if (vitri > 0) // chèn dấu phẩy ở vị trí tìm thấy + chiều dài của chuỗi con "kien" sb.Insert(vitri + "kien".Length, ",");
View more random threads:
- Tạo bộ đếm số người online trong ASP.NET [Đầy đủ hướng dẫn và source code]
- Sử dụng jQuery Intellisense Trong VS 2008
- số happy
- Tạo và sử dụng cây biểu thức (expression tree)
- Làm ứng dụng khởi động cùng window trong lập trình C#
- Tạo form có hình dạng đặc biệt dùng ảnh png
- Giới thiệu với các bạn bộ thư viện Serialize, Deserialize object ra mảng bytes và từ mảng bytes ra đối tượng một cách đơn giản
- Điện thoại iphone 7 xách tay tại mỹ giá bao nhiêu tại TP HCM
- Video hướng dẫn cách tạo một Form để gửi Email trong C#
- Tạo phím nóng trong dotnet không thèm đụng hook
-
11-06-2007, 09:58 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tôi chưa sử dụng lớp này bao giờ vì thấy lớp string dùng vẫn ổn nên chưa đụng đến nó. Nay tiện có bài này nhờ bạn tóm tắt sự khác nhau giữa string và stringbuilder, khi nào thì nên dùng stringbuilder khi nào thì không? Càng ngắn càng tốt, cảm ơn bạn!
Còn code trên tôi băn khoăn không biết cái này:
Gửi bởi neverland87
-
11-06-2007, 10:05 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi nampt
sb.Replace("con bo","con trau");
Lưu ý: mình sẽ sửa lại trong bài viết trên
-
11-06-2007, 11:53 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
chưa thể hiện đc cái hơn của StringBuilder.
-
11-06-2007, 03:04 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Thấy các bác bàn luận sôi nổi về String và StringBuilder, em xin đóng góp vài ý kiến qua 3 tháng học C# thông qua lớp "xóa mù lập trình" ^_^. Nếu em có nêu gì sai, các bác sửa sai dùm em nhé
Đầu tiên, xin bàn về lớp String:
- Lớp String cung cấp cho ta kiểu dữ liệu đối với tất cả các chuỗi. Một đối tượng String thật sự là 1 đối tượng: nó được cấp phát bộ nhớ trên heap giống như các đối tượng khác, và sẽ được thu gom bởi GC (Garbage Collection) khi được giải phóng.
- Nhìn theo khía cạnh nguồn lực hệ thống, việc thao tác chuỗi là 1 trong những tác vụ tổn hao rất nhiều bộ nhớ. Điều này càng rõ với .NET, theo đấy tất cả các chuỗi khi được tạo ra là bất di bất dịch, nghĩa là khi bạn tạo ra 1 chuỗi, thì bạn không thể thêm gì vào nó, hoặc trích gì đó từ nó ra, hoặc thay đổi trị của nó bất cứ theo kiểu gì đó.
Ví dụ: khi bạn ghi nối đuôi một chuỗi sau một chuỗi khác, thì CLR sẽ cho tạo 1 chuỗi hoàn toàn mới do sự phối hợp của chuỗi cũ và chuỗi mới, và cho chuỗi nguyên thủy về trạng thái sẵn sàng cho GC thu gom.
- Đến lớp StringBuilder: "anh chàng" này ra đời đã giúp giảm thiểu việc ghi phí phạm nguồn lực của lớp String. Đối tượng StringBuilder thật sự là 1 đối tượng chứ không phải thuần túy một chuỗi. Nó có 1 vùng đệm nội tại đặc biệt dùng thao tác chuỗi nhanh và hữu hiệu hơn. StringBuilder thật sự hữu ích khi bạn cần thao tác chuỗi qui mô lớn và lặp đi lặp lại nhiều lần. StringBuilder có riêng cho mình những phương thức lo chèn, ghi nối đuôi, gỡ bỏ và thay thế chuỗi, và khi bạn làm xong việc, bạn có thể lấy ra kết quả sử dụng phương thức ToString()
Ví dụ để so sánh:
+Đối với StringBuilder:
Mã:StringBuilder sb = StringBuilder("The quick brown fox jumps over the lazy dog");sb.Insert(19," happily");sb.Remove(10,6);sb.Replace("jumps"," leaps");sb.AppendFormat(" {0} times in {1} minutes",17,2);int vitri = sb.ToString().IndexOf("dog");if (vitri>0) sb.Insert(vitri + "dog".Length,", ");
Mã:int vitri;string sampleString = "The quick brown fox jumps over the lazy dog";sampleString = sampleString.Insert(19," happily");sampleString = sampleString.Remove(10,6);sampleString = sampleString.Replace("jumps","leaps");sampleString += string.Format("{0} times in {1} minutes",17,2);int vitri = sampleString.IndexOf("dog");if (vitri>0) sampleString = sample.String.Insert(vitri + "dog".Length,", ");
-
10-04-2009, 11:27 AM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
đúng như neverland87 nói. theo mình biết thì trong java có lớp stringBuffer tương tự như vậy. khi đi làm cho một số công ty outsource có quy định chặt chẽ về code thì thường ko đc sử dụng String để cộng xâu mà bắt buộc phải dùng StringBuilder để cộng xâu. điều này làm tăng performance một cách đáng kể.
nếu ai từng làm ứng dụng cho server hoặc ứng dụng mà có nhiều user truy cập vào một lúc, thì việc giảm bớt khởi tạo các object giúp tăng performance rất nhiều.
-
05-07-2015, 02:09 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Thanks bạn, rất hữu ích về xử lý chuỗi.
đúng là công việc này tốn rất nhiều tài nguyên của máy.
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...