Reputation: 1393
How to ignore the first 10 characters of a string?
Input:
str = "hello world!";
Output:
d!
Upvotes: 129
Views: 330582
Reputation: 19966
Calling SubString()
allocates a new string. For optimal performance, you should avoid that extra allocation. Starting with C# 7.2
you can take advantage of the Span pattern.
When targeting .NET Framework
, include the System.Memory NuGet
package. For .NET Core
projects this works out of the box.
static void Main(string[] args)
{
var str = "hello world!";
var span = str.AsSpan(10); // No allocation!
// Outputs: d!
foreach (var c in span)
{
Console.Write(c);
}
Console.WriteLine();
}
Upvotes: 1
Reputation: 105
Starting from C# 8, you simply can use Range Operator. It's the more efficient and better way to handle such cases.
string AnString = "Hello World!";
AnString = AnString[10..];
Upvotes: 7
Reputation: 1271
Substring
has two Overloading methods:
public string Substring(int startIndex);//The substring starts at a specified character position and continues to the end of the string.
public string Substring(int startIndex, int length);//The substring starts at a specified character position and taking length no of character from the startIndex.
So for this scenario, you may use the first method like this below:
var str = "hello world!";
str = str.Substring(10);
Here the output is:
d!
If you may apply defensive coding by checking its length.
Upvotes: 14
Reputation: 125
You Can Remove Char using below Line ,
:- First check That String has enough char to remove ,like
string temp="Hello Stack overflow";
if(temp.Length>10)
{
string textIWant = temp.Remove(0, 10);
}
Upvotes: 4
Reputation: 17
There is no need to specify the length into the Substring
method.
Therefore:
string s = hello world;
string p = s.Substring(3);
p
will be:
"lo world".
The only exception you need to cater for is ArgumentOutOfRangeException
if
startIndex
is less than zero or greater than the length of this instance.
Upvotes: 1
Reputation: 22116
For:
var str = "hello world!";
To get the resulting string without the first 10 characters and an empty string if the string is less or equal in length to 10 you can use:
var result = str.Length <= 10 ? "" : str.Substring(10);
or
var result = str.Length <= 10 ? "" : str.Remove(0, 10);
First variant being preferred since it needs only one method parameter.
Upvotes: 1
Reputation: 32438
You can use the method Substring method that takes a single parameter, which is the index to start from.
In my code below i deal with the case were the length is less than your desired start index and when the length is zero.
string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));
Upvotes: 1
Reputation: 2453
Use substring method.
string s = "hello world";
s=s.Substring(10, s.Length-10);
Upvotes: 3
Reputation: 3609
str = str.Remove(0,10);
Removes the first 10 characters
or
str = str.Substring(10);
Creates a substring starting at the 11th character to the end of the string.
For your purposes they should work identically.
Upvotes: 271
Reputation:
Substring is probably what you want, as others pointed out. But just to add another option to the mix...
string result = string.Join(string.Empty, str.Skip(10));
You dont even need to check the length on this! :) If its less than 10 chars, you get an empty string.
Upvotes: 19
Reputation: 38210
str = "hello world!";
str.Substring(10, str.Length-10)
you will need to perform the length checks else this would throw an error
Upvotes: 118
Reputation: 10347
The Substring
has a parameter called startIndex. Set it according to the index you want to start at.
Upvotes: 6