C# String Class
In C#, a string is a sequence of Unicode characters or an array of characters. The range of Unicode characters will be U+0000 to U+FFFF. The array of characters is also termed as the text. So the string is the representation of the text.
A string is represented by a class System.String. The String class is defined in the .NET base class library. In other words, a String object is a sequential collection of System.Char objects, which represent a string.
Characteristics of String Class:
- The System.String class is immutable, i.e., once created, its state cannot be altered.
- Provides the properties like length used to get a total number of characters present in the given string.
- String objects can include a null character, which counts as part of the string’s length.
- It provides the position of the characters in the given string called as indexes.
- It allows empty strings. Empty strings are valid instances of String objects that contain zero characters.
- It also supports searching strings, comparison of strings, testing of equality, modifying the string, normalization of string, copying of strings, etc.
- It also provides several ways to create strings like using a constructor, using concatenation, etc.
Example: Use of String class to print a message.
// C# Program to demonstrate the use of String class
using System;
class Geeks
{
public static void Main()
{
// Using String class
String s = "Hello Geek";
// Display the output
System.Console.WriteLine(s);
}
}
// C# Program to demonstrate the use of String class
using System;
class Geeks
{
public static void Main()
{
// Using String class
String s = "Hello Geek";
// Display the output
System.Console.WriteLine(s);
}
}
Output
Hello Geek
Constructor
Constructor | Description |
---|---|
String(Char*) | Initializes a new instance of the String class to the value indicated by a specified pointer to an array of Unicode characters. |
String(Char*, Int32, Int32) | Initializes a new instance of the String class to the value indicated by a specified pointer to an array of Unicode characters, a starting character position within that array, and a length. |
String(Char*, Int32) | Initializes a new instance of the String class to the value indicated by a specified Unicode character repeated a specified number of times. |
String(Char[]) | Initializes a new instance of the String class to the value indicated by an array of Unicode characters. |
String(Char[], Int32, Int32) | Initializes a new instance of the String class to the value indicated by an array of Unicode characters, a starting character position within that array, and a length. |
String(SByte) | Initializes a new instance of the String class to the value indicated by a pointer to an array of 8-bit signed integers. |
String(SByte*, Int32, Int32) | Initializes a new instance of the String class to the value indicated by a specified pointer to an array of 8-bit signed integers, a starting position within that array, and a length. |
String(SByte*, Int32, Int32, Encoding) | Initializes a new instance of the String class to the value indicated by a specified pointer to an array of 8-bit signed integers, a starting position within that array, a length, and an Encoding object. |
Example: Creating a string using String class constructor String(Char*, Int32) and String([]).
// C# program to create
// string using the constructor String(Char*, Int32), and String(Chars[]);
using System;
class Geeks
{
public static void Main()
{
char[] chars = { 'G', 'E', 'E', 'K', 'S' };
// Create a string from a character array.
string s = new string(chars);
Console.WriteLine(s);
// Create a string that consists of
// a character repeated 5 times.
string s2 = new string('E', 5);
Console.WriteLine(s2);
}
}
// C# program to create
// string using the constructor String(Char*, Int32), and String(Chars[]);
using System;
class Geeks
{
public static void Main()
{
char[] chars = { 'G', 'E', 'E', 'K', 'S' };
// Create a string from a character array.
string s = new string(chars);
Console.WriteLine(s);
// Create a string that consists of
// a character repeated 5 times.
string s2 = new string('E', 5);
Console.WriteLine(s2);
}
}
Output
GEEKS EEEEE
Properties
In C# the String class has two properties.
- Chars[Int32]: Gets the Char object at a specified position in the current String object.
- Length: Gets the number of characters in the current String object.
Example: Using the Properties of string class.
// C# program to demonstrate the
// String Class Properties
using System;
class Geeks
{
public static void Main()
{
string str = "GeeksforGeeks";
// using Chars[Int32] & Length property
for (int i = 0; i <= str.Length - 1; i++)
Console.Write("{0} ", str[i]);
}
}
// C# program to demonstrate the
// String Class Properties
using System;
class Geeks
{
public static void Main()
{
string str = "GeeksforGeeks";
// using Chars[Int32] & Length property
for (int i = 0; i <= str.Length - 1; i++)
Console.Write("{0} ", str[i]);
}
}
Output
G e e k s f o r G e e k s
Methods
Method | Description |
---|---|
Clone() | Returns a reference to this instance of String. |
Compare() | Used to compare the two string objects. |
CompareOrdinal(String, Int32, String, Int32, Int32) | Compares substrings of two specified String objects by evaluating the numeric values of the corresponding Char objects in each substring. |
CompareOrdinal(String, String) | Compares two specified String objects by evaluating the numeric values of the corresponding Char objects in each string. |
CompareTo() | Compare the current instance with a specified Object or String object. |
Concat() | Concatenates one or more instances of String, or the String representations of the values of one or more instances of Object. |
Contains(String) | Returns a value indicating whether a specified substring occurs within this string. |
Copy(String) | Creates a new instance of String with the same value as a specified String. |
CopyTo(Int32, Char[], Int32, Int32) | Copies a specified number of characters from a specified position in this instance to a specified position in an array of Unicode characters. |
EndsWith() | Determines whether the end of this string instance matches a specified string. |
Equals() | Determines whether two String objects have the same value. |
Format() | Converts the value of objects to strings based on the formats specified and inserts them into another string. |
GetEnumerator() | Retrieves an object that can iterate through the individual characters in this string. |
GetHashCode() | Returns the hash code for this string. |
GetType() | Gets the Type of the current instance. (Inherited from Object) |
GetTypeCode() | Returns the TypeCode for class String. |
IndexOf() | Reports the zero-based index of the first occurrence of a specified Unicode character or string within this instance. The method returns -1 if the character or string is not found in this instance. |
IndexOfAny() | Reports the index of the first occurrence in this instance of any character in a specified array of Unicode characters. The method returns -1 if the characters in the array are not found in this instance. |
Insert(Int32, String) | Returns a new string in which a specified string is inserted at a specified index position in this instance. |
Intern(String) | Retrieves the system’s reference to the specified String. |
IsInterned(String) | Retrieves a reference to a specified String. |
IsNormalized() | Indicates whether this string is in a particular Unicode normalization form. |
IsNullOrEmpty(String) | Indicates whether the specified string is null or an Empty string. |
IsNullOrWhiteSpace(String) | Indicates whether a specified string is null, empty, or consists only of white-space characters. |
Join() | Concatenates the elements of a specified array or the members of a collection, using the specified separator between each element or member. |
LastIndexOf() | Reports the zero-based index position of the last occurrence of a specified Unicode character or string within this instance. The method returns -1 if the character or string is not found in this instance. |
MemberwiseClone() | Creates a shallow copy of the current Object. (Inherited from Object) |
Normalize() | Returns a new string whose binary representation is in a particular Unicode normalization form. |
PadLeft() | Returns a new string of a specified length in which the beginning of the current string is padded with spaces or with a specified Unicode character. |
PadRight() | Returns a new string of a specified length in which the end of the current string is padded with spaces or with a specified Unicode character. |
Remove() | Returns a new string in which a specified number of characters from the current string are deleted. |
Replace() | Returns a new string in which all occurrences of a specified Unicode character or String in the current string are replaced with another specified Unicode character or String. |
Split() | Returns a string array that contains the substrings in this instance that are delimited by elements of a specified string or Unicode character array. |
StartsWith(String) | Determines whether the beginning of this string instance matches a specified string. |
Substring(Int32) | Retrieves a substring from this instance. |
ToCharArray() | Copies the characters in this instance to a Unicode character array. |
ToLower() | Returns a copy of this string converted to lowercase. |
ToLowerInvariant() | Returns a copy of this String object converted to lowercase using the casing rules of the invariant culture. |
ToString() | Converts the value of this instance to a String. |
ToUpper() | Returns a copy of this string converted to uppercase. |
ToUpperInvariant() | Returns a copy of this String object converted to uppercase using the casing rules of the invariant culture. |
Trim() | Returns a new string in which all leading and trailing occurrences of a set of specified characters from the current String object are removed. |
TrimEnd(Char[]) | Removes all trailing occurrences of a set of characters specified in an array from the current String object. |
TrimStart(Char[]) | Removes all leading occurrences of a set of characters specified in an array from the current String object. |
Example: Using Copy() and Compare() methods from the String class.
// C# program to illustrate
// String class methods
using System;
class Geeks
{
static void copymethod()
{
string s = "GeeksforGeeks";
string s2 = "geeks";
Console.WriteLine("Original Strings: str1 = " + "'{0}' and str2 ='{1}'", s, s2);
Console.WriteLine("");
Console.WriteLine("After Copy method");
Console.WriteLine("");
// using the Copy method
// to copy the value of str1
// into str2
s2 = String.Copy(s);
Console.WriteLine("Strings are str1 = " + "'{0}' and str2='{1}'", s, s2);
}
// Main method
static public void Main()
{
// variables
string s1 = "geeksforgeeks";
string s2 = "geeksforgeeks";
bool result;
// Compare(string, string) method return true
// because the given strings are equal
result = String.Compare(s1, s2) == 0;
Console.WriteLine("Result of Compare Method: " + result);
// calling method
copymethod();
}
}
// C# program to illustrate
// String class methods
using System;
class Geeks
{
static void copymethod()
{
string s = "GeeksforGeeks";
string s2 = "geeks";
Console.WriteLine("Original Strings: str1 = " + "'{0}' and str2 ='{1}'", s, s2);
Console.WriteLine("");
Console.WriteLine("After Copy method");
Console.WriteLine("");
// using the Copy method
// to copy the value of str1
// into str2
s2 = String.Copy(s);
Console.WriteLine("Strings are str1 = " + "'{0}' and str2='{1}'", s, s2);
}
// Main method
static public void Main()
{
// variables
string s1 = "geeksforgeeks";
string s2 = "geeksforgeeks";
bool result;
// Compare(string, string) method return true
// because the given strings are equal
result = String.Compare(s1, s2) == 0;
Console.WriteLine("Result of Compare Method: " + result);
// calling method
copymethod();
}
}
Output
Result of Compare Method: True Original Strings: str1 = 'GeeksforGeeks' and str2 ='geeks' After Copy method Strings are str1 = 'GeeksforGeeks' and str2='GeeksforGeeks'
Operators
There are two operators string class
- Equality(String, String): Determines whether two specified strings have the same value.
- Inequality(String, String): Determines whether two specified strings have different values.
Example: Using Equality and Inequality operators of string class.
// Using the Operators of string class
using System;
class Geeks
{
public static void Main()
{
string s1 = "WelcomeToGeeks";
string s2 = "WelcomeToGeeks";
bool res;
// Equality operator return true
// as both string are equal
res = s1 == s2;
Console.WriteLine($"The strings \"{s1}\" and \"{s2}\" equal: {res}");
// Inequality operator return false
// as both string are equal
res = s1 != s2;
Console.WriteLine($"The strings \"{s1}\" and \"{s2}\" not equal: {res}");
}
}
// Using the Operators of string class
using System;
class Geeks
{
public static void Main()
{
string s1 = "WelcomeToGeeks";
string s2 = "WelcomeToGeeks";
bool res;
// Equality operator return true
// as both string are equal
res = s1 == s2;
Console.WriteLine($"The strings \"{s1}\" and \"{s2}\" equal: {res}");
// Inequality operator return false
// as both string are equal
res = s1 != s2;
Console.WriteLine($"The strings \"{s1}\" and \"{s2}\" not equal: {res}");
}
}
Output
The strings "WelcomeToGeeks" and "WelcomeToGeeks" equal: True The strings "WelcomeToGeeks" and "WelcomeToGeeks" not equal: False
Important Points:
- The maximum size of the String object in memory can be 2GB or about 1 billion characters.
- A string that has been declared but has not been assigned a value is null. Attempting to call methods on that string throws a NullReferenceException.
- String Class can not be inherited because it is a sealed class.
- String Class present in the System namespace.