Substring C# là gì? So sánh chuỗi trong C#

Chuỗi trong C# là gì? Trong C#, mọi người có thể dùng chuỗi như là mảng các ký tự hay là sử dụng string để khai báo một biến chuỗi. Vậy thì chuỗi trong c# được định nghĩa như thế nào? Substring c# là gì? Cùng Comdy tìm hiểu chi tiết trong bài viết này nhé.

Substring C# là gì?

Substring C# là gì
Substring là một phương thức được sử dụng để trích xuất một phần của chuỗi

Trong ngôn ngữ lập trình C#, substring là một phương thức được sử dụng để trích xuất một phần của chuỗi. Phương thức này cho phép bạn lấy một phần của chuỗi từ vị trí bắt đầu đến vị trí kết thúc cụ thể hoặc lấy một phần từ một vị trí cụ thể với độ dài nhất định.

Cú pháp:

string result = originalString.Substring(startIndex);
string resultWithLength = originalString.Substring(startIndex, length);

Trong đó:

  • startIndex: Là vị trí bắt đầu của chuỗi con cần trích xuất.
  • length: (Tùy chọn) Là độ dài của chuỗi con cần trích xuất.

String là gì C#?

String trong C# là một kiểu dữ liệu được sử dụng để lưu trữ chuỗi các ký tự. Chuỗi là một dãy các ký tự Unicode và được biểu diễn bởi kiểu dữ liệu string. Trong C#, các chuỗi được xem là kiểu dữ liệu tham chiếu (reference type).

Tổng quan về chuỗi trong C#

Trong C#, bạn có thể sử dụng chuỗi dưới dạng mảng ký tự, tuy nhiên, thực tế phổ biến hơn là sử dụng từ khóa c# string để khai báo biến chuỗi. Từ khóa string là bí danh cho lớp System.String.

Tạo một đối tượng string trong c#

Tạo một đối tượng string trong c#
Hướng dẫn cách tạo một đối tượng string trong c#

Bạn có thể tạo đối tượng string bằng một trong các phương thức sau:

  • Bằng cách gán một chuỗi ký tự cho một biến String.
  • Bằng cách sử dụng một phương thức khởi tạo lớp String.
  • Bằng cách sử dụng toán tử nối chuỗi (+).
  • Bằng cách lấy một thuộc tính hoặc gọi một phương thức trả về một chuỗi.
  • Bằng cách gọi một phương thức định dạng để chuyển đổi một giá trị hoặc một đối tượng thành biểu diễn chuỗi của nó.

Ví dụ sau đây minh họa điều này:

using System;

namespace StringApplication 
{
   class Program 
   {   
      static void Main(string[] args) 
      {
         string fname = "Trung", lname = "Nguyen";
			
         char[] letters = { 'H', 'e', 'l', 'l','o' };
         string[] sarray = { "Hello", "From", "Comdy" };
         
         string fullname = fname + " " + lname;
         Console.WriteLine("Full Name: {0}", fullname);
         
         //by using string constructor { 'H', 'e', 'l', 'l','o' };
         string greetings = new string(letters);
         Console.WriteLine("Greetings: {0}", greetings);
         
         //methods returning string { "Hello", "From", "Comdy" };
         string message = String.Join(" ", sarray);
         Console.WriteLine("Message: {0}", message);
         
         //formatting method to convert a value
         DateTime waiting = new DateTime(2020, 03, 28, 17, 58, 1);
         string chat = String.Format("Message sent at {0:t} on {0:D}", waiting);
         Console.WriteLine("Message: {0}", chat);
      }
   }
}

Kết quả khi chạy chương trình:

Full Name: Trung Nguyen
Greetings: Hello
Message: Hello From Comdy
Message: Message sent at 5:58 PM on Saturday, March 28, 2020

Tip: bạn nên sử dụng phương thức string.Format() hoặc class StringBuilder để nối chuỗi thay vì sử dụng toán tử + để cộng chuỗi.

Thuộc tính của lớp String

Thuộc tính của lớp String
Có 2 thuộc tính của lớp string đó là gì?

Lớp String có hai thuộc tính sau:

STT Thuộc tính Mô tả
1 Chars Lấy đối tượng Char tại một vị trí cụ thể trong đối tượng String hiện tại
2 Length Lấy số ký tự của đối tượng String hiện tại

Các phương thức của lớp String

Lớp String có nhiều phương thức giúp bạn làm việc với chuỗi. Bảng sau đây cung cấp một số phương thức được sử dụng phổ biến nhất:

STT Phương thức
1 public static int Compare(string strA, string strB)

So sánh hai đối tượng String cụ thể và trả về một integer mà chỉ vị trí có liên quan của chúng trong thứ tự sắp xếp

2 public static int Compare(string strA, string strB, bool ignoreCase )

So sánh hai đối tượng String cụ thể và trả về một integer mà chỉ vị trí có liên quan của chúng trong thứ tự sắp xếp. Tuy nhiên, nó bỏ qua sự phân biệt kiểu nếu tham số Boolean là true

3 public static string Concat(string str0, string str1)

Nối chuỗi hai đối tượng String

4 public static string Concat(string str0, string str1, string str2)

Nối chuỗi ba đối tượng String

5 public static string Concat(string str0, string str1, string str2, string str3)

Nối chuỗi bốn đối tượng String

6 public bool Contains(string value)

Trả về một giá trị chỉ dẫn có hay không đối tượng String đã cho xuất hiện bên trong chuỗi này

7 public static string Copy(string str)

Tạo một đối tượng String mới với cùng giá trị như chuỗi đã cho

8 public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count)

Sao chép một số ký tự cụ thể từ một vị trí đã cho của đối tượng String tới một vị trí đã xác định trong một mảng các ký tự Unicode

9 public bool EndsWith(string value)

Xác định có hay không phần kết thúc của đối tượng String là so khớp với chuỗi đã cho

10 public bool Equals(string value)

Xác định có hay không đối tượng String hiện tại và đối tượng String đã cho là có cùng giá trị

11 public static bool Equals(string a, string b)

Xác định có hay không hai đối tượng String đã cho có cùng giá trị

12 public static string Format(string format, Object arg0)

Thay thế một hoặc nhiều mục định dạng trong một chuỗi đã cho với biểu diễn chuỗi của một đối tượng cụ thể

13 public int IndexOf(char value)

Trả về chỉ mục (dựa trên cơ sở 0) cho sự xuất hiện đầu tiên của ký tự Unicode đã cho trong chuỗi hiện tại

14 public int IndexOf(string value)

Trả về chỉ mục (dựa trên cơ sở 0) cho sự xuất hiện đầu tiên của chuỗi đã cho trong Instance (sự thể hiện) này

15 public int IndexOf(char value, int startIndex)

Trả về chỉ mục (dựa trên cơ sở 0) cho sự xuất hiện đầu tiên của ký tự Unicode đã cho trong chuỗi này, bắt đầu tìm kiếm tại vị trí của ký tự đã cho

16 public int IndexOf(string value, int startIndex)

Trả về chỉ mục (dựa trên cơ sở 0) cho sự xuất hiện đầu tiên của chuỗi đã cho trong Instance (sự thể hiện) này, bắt đầu tìm kiếm tại vị trí của ký tự đã cho

17 public int IndexOfAny(char[] anyOf)

Trả về chỉ mục (dựa trên cơ sở 0) cho sự xuất hiện đầu tiên của Instance (sự thể hiện) này của bất kỳ ký tự nào trong một mảng ký tự Unicode đã xác định

18 public int IndexOfAny(char[] anyOf, int startIndex)

Trả về chỉ mục (dựa trên cơ sở 0) cho sự xuất hiện đầu tiên của Instance (sự thể hiện) này của bất kỳ ký tự nào trong một mảng ký tự Unicode đã xác định, bắt đầu tìm kiếm tại vị trí của ký tự đã cho

19 public string Insert(int startIndex, string value)

Trả về một chuỗi mới trong đó một chuỗi đã cho được chèn tại một vị trí có chỉ mục đã xác định trong đối tượng String hiện tại

20 public static bool IsNullOrEmpty(string value)

Chỉ rằng có hay không chuỗi đã cho là null hoặc là một chuỗi Empty

21 public static string Join(string separator, params string[] value)

Nối chuỗi tất cả phần tử của một mảng chuỗi, bởi sử dụng Separator (bộ tách) đã cho giữa mỗi phần tử

22 public static string Join(string separator, string[] value, int startIndex, int count)

Nối chuỗi các phần tử đã xác định của một mảng chuỗi, bởi sử dụng Separator (bộ tách) đã cho giữa mỗi phần tử

23 public int LastIndexOf(char value)

Trả về chỉ mục (dựa trên cơ sở 0) cho sự xuất hiện cuối cùng của ký tự Unicode đã cho bên trong đối tượng String hiện tại

24 public int LastIndexOf(string value)

Trả về chỉ mục (dựa trên cơ sở 0) cho sự xuất hiện cuối cùng của một chuỗi đã cho bên trong đối tượng String hiện tại

25 public string Remove(int startIndex)

Gỡ bỏ tất cả ký tự trong Instance hiện tại, bắt đầu tại vị trí đã xác định và tiếp tục tới vị trí cuối cùng, và trả về chuỗi đó

26 public string Remove(int startIndex, int count)

Gỡ bỏ số ký tự đã cho trong chuỗi hiện tại bắt đầu tại một vị trí đã xác định và trả về chuỗi đó

27 public string Replace(char oldChar, char newChar)

Thay thế tất cả ký tự Unicode đã cho xuất hiện trong đối tượng String hiện tại với ký tự Unicode đã xác định và trả về chuỗi mới

28 public string Replace(string oldValue, string newValue)

Thay thế tất cả chuỗi đã cho xuất hiện trong đối tượng String hiện tại với đối tượng string đã xác định và trả về chuỗi mới

29 public string[] Split(params char[] separator)

Trả về một mảng chuỗi mà chứa các chuỗi phụ trong đối tượng String hiện tại, được giới hạn bởi các phần tử của một mảng ký tự Unicode đã cho

30 public string[] Split(char[] separator, int count)

Trả về một mảng chuỗi mà chứa các chuỗi phụ trong đối tượng String hiện tại, được giới hạn bởi các phần tử của một mảng ký tự Unicode đã cho. Tham số int xác định số chuỗi phụ tối đa để trả về

31 public bool StartsWith(string value)

Xác định có hay không phần bắt đầu của instance của chuỗi này so khớp với chuỗi đã cho

32 public char[] ToCharArray()

Trả về một mảng ký tự Unicode với tất cả ký tự trong đối tượng String hiện tại

33 public char[] ToCharArray(int startIndex, int length)

Trả về một mảng ký tự Unicode với tất cả ký tự trong đối tượng String hiện tại, bắt đầu từ chỉ mục đã xác định và tới độ dài đã cho

34 public string ToLower()

Trả về một bản sao của chuỗi này đã được biến đổi thành chữ thường

35 public string ToUpper()

Trả về một bản sao của chuỗi này đã được biến đổi thành chữ hoa

36 public string Trim()

Gỡ bỏ tất cả ký tự whitespace từ đối tượng String hiện tại

Bạn có thể truy cập thư viện MSDN để biết danh sách đầy đủ các phương thức và các hàm tạo của lớp String.

Lấy ví dụ về chuỗi trong C#

So sánh chuỗi trong C#

using System;

namespace StringApplication 
{
   class StringProg 
   {   
      static void Main(string[] args) 
      {
         string str1 = "This is test";
         string str2 = "This is text";

         if (String.Compare(str1, str2) == 0) 
         {
            Console.WriteLine(str1 + " and " + str2 +  " are equal.");
         } 
         else 
         {
            Console.WriteLine(str1 + " and " + str2 + " are not equal.");
         }
         Console.ReadKey() ;
      }
   }
}

Kết quả khi chạy chương trình:

This is test and This is text are not equal.

Chuỗi chứa chuỗi trong C#

using System;

namespace StringApplication 
{
   class StringProg 
   {   
      static void Main(string[] args) 
      {
         string str = "This is test";
         
         if (str.Contains("test")) 
         {
            Console.WriteLine("The sequence 'test' was found.");
         }
         Console.ReadKey() ;
      }
   }
}

Kết quả khi chạy chương trình:

The sequence 'test' was found.

Cắt chuỗi trong c#

Sau đây là ví dụ về nối chuỗi c#:

using System;

namespace StringApplication 
{
   class StringProg 
   {   
      static void Main(string[] args) 
      {
         string str = "Last night I dreamt of San Pedro";
         Console.WriteLine(str);
         string substr = str.Substring(23);
         Console.WriteLine(substr);
         Console.ReadKey();
      }
   }
}

Kết quả khi chạy chương trình:

Last night I dreamt of San Pedro
San Pedro

Nối chuỗi trong C#

using System;

namespace StringApplication 
{
   class StringProg 
   {   
      static void Main(string[] args) 
      {
         string[] starray = new string[]
         { 
         	"Down the way nights are dark",
            "And the sun shines daily on the mountain top",
            "I took a trip on a sailing ship",
            "And when I reached Jamaica",
            "I made a stop"
         };

         string str = String.Join("n", starray);
         Console.WriteLine(str);
         Console.ReadKey();
      }
   }
}

Kết quả khi chạy chương trình:

Down the way nights are dark
And the sun shines daily on the mountain top
I took a trip on a sailing ship
And when I reached Jamaica
I made a stop

Khởi tạo StringBuilder

StringBuilder c# có thể được khởi tạo giống như lớp.

StringBuilder sb = new StringBuilder();            
//or
StringBuilder sb = new StringBuilder("Hello World!!");

Các phương thức quan trọng của StringBuilder

Phương thức Append() / AppendLine()

Sử dụng phương thức Append() của StringBuilder để thêm hoặc nối một chuỗi vào StringBuilder. Phương thức AppendLine() nối thêm chuỗi với một dòng mới ở cuối.

StringBuilder sb = new StringBuilder("Hello");

sb.Append(" World!!");
sb.AppendLine("Hello C#!");
sb.AppendLine("This is new line.");

Console.WriteLine(sb);

Kết quả khi chạy chương trình:

Hello World!!Hello C#!
This is new line.

Phương thức Replace()

Phương thức Replace() thay thế tất cả sự xuất hiện của một chuỗi được chỉ định bằng một chuỗi thay thế.

StringBuilder sb = new StringBuilder("Hello World!!",50);
sb.Replace("World", "C#");

Phương thức ToString()

Sử dụng phương thức ToString() để lấy chuỗi từ StringBuilder.

StringBuilder sb = new StringBuilder("Hello World!!");
string str = sb.ToString();

Indexof C# là gì?

Indexof C# là gì
IndexOf trong C# là một phương thức của lớp chuỗi được sử dụng để tìm vị trí xuất hiện đầu tiên của một chuỗi con cụ thể trong chuỗi gốc

Phương thức IndexOf trong C# là một phương thức của lớp chuỗi (string) được sử dụng để tìm vị trí xuất hiện đầu tiên của một chuỗi con cụ thể trong chuỗi gốc. Nếu chuỗi con không được tìm thấy, phương thức này trả về giá trị -1.

Cú pháp:

int index = originalString.IndexOf(substring);

Trong đó:

  • originalString: Chuỗi mà bạn muốn tìm kiếm trong.
  • substring: Chuỗi con mà bạn muốn tìm vị trí xuất hiện đầu tiên.

Stringbuilder trong C#

Stringbuilder trong C#
StringBuilder là một lớp nằm trong namespace System.Text

StringBuilder là một lớp nằm trong namespace System.Text được thiết kế để làm việc hiệu quả với chuỗi (string), đặc biệt là khi cần thực hiện nhiều thay đổi, thêm, hoặc xóa nội dung trong chuỗi. So với việc sử dụng kiểu dữ liệu string, String builder c# có hiệu suất tốt hơn trong các tình huống mà chuỗi thường xuyên bị thay đổi.

Dưới đây là một số phương thức và tính năng quan trọng của lớp StringBuilder:

Hàm Append

StringBuilder sb = new StringBuilder();
sb.Append(“Hello”);
sb.Append(” “);
sb.Append(“World”);

Hàm Insert

StringBuilder sb = new StringBuilder(“Hello World”);
sb.Insert(5, “Beautiful “);

Hàm Remove

StringBuilder sb = new StringBuilder(“Hello World”);
sb.Remove(6, 5); // Xóa 5 ký tự từ vị trí 6

Hàm Replace

StringBuilder sb = new StringBuilder(“Hello World”);
sb.Replace(“World”, “Universe”);

Hàm Length

int length = sb.Length;
sb.Length = 0; // Đặt độ dài về 0 để xóa nội dung.

Cộng chuỗi trong c# như thế nào?

Cộng chuỗi trong c# như thế nào
Trong C#, để cộng các chuỗi, bạn có thể sử dụng toán tử + hoặc phương thức Concat của lớp string.
  • Toán tử + để cộng chuỗi

string str1 = “Hello”;
string str2 = ” World”;
string result = str1 + str2;
Console.WriteLine(result); // Kết quả: Hello World

  • Phương thức concat cộng chuỗi

string str1 = “Hello”;
string str2 = ” World”;
string result = string.Concat(str1, str2);
Console.WriteLine(result); // Kết quả: Hello World

  • Phương thức join cộng chuỗi 

string str1 = “Hello”;
string str2 = ” World”;
string result = string.Concat(str1, str2);
Console.WriteLine(result); // Kết quả: Hello World

Concat là gì?

Concat được sử dụng để nối (ghép) nhiều chuỗi thành một chuỗi duy nhất. Phương thức này thuộc về lớp string và có thể được gọi trực tiếp trên đối tượng chuỗi hoặc thông qua lớp string mà không cần tạo ra một đối tượng StringBuilder như khi bạn muốn nối nhiều chuỗi.

Cú pháp concat trong c#:

string result = string.Concat(str1, str2, str3, …);

Cú pháp concat trong SQL:

CONCAT(string1, string2, string3, …)

Equals trong c# là gì?

rong C#, phương thức Equals là một phương thức của lớp object được kế thừa bởi tất cả các lớp. Tuy nhiên, nó thường được ghi đè (override) trong các lớp cụ thể để cung cấp một cách để so sánh giữa hai đối tượng và kiểm tra xem chúng có “bằng nhau” hay không.

Cú pháp:

public bool Equals(object obj);

Trong đó:

  • obj: Đối tượng cần so sánh với đối tượng hiện tại.

Kết lại

Trên đây là toàn bộ chia sẻ của Comdy về chuỗi trong C#. Hi vọng những thông tin, kiến thức trong bài viết này là bổ ích, có ý nghĩa với mọi người. Xin cám ơn vì đã theo dõi và ủng hộ.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *