130

How to ignore the first 10 characters of a string?

Input:

str = "hello world!";

Output:

d!
4
  • 9
    string.Substring(9); where 9 is start index Commented Aug 25, 2011 at 7:37
  • Remember to check first that the string has at least 10 chars or you will get an exception. Commented Aug 25, 2011 at 7:40
  • Why substring don't support (startIndex,endindex) ? every time we have to calculate Length.. :-( Commented Aug 25, 2011 at 7:51
  • 1
    @Waqas: actually it's str.Substring(10), the parameter being the position from which the substring starts to be extracted Commented Aug 25, 2011 at 8:27

12 Answers 12

271

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.

Sign up to request clarification or add additional context in comments.

Comments

118
str = "hello world!";
str.Substring(10, str.Length-10)

you will need to perform the length checks else this would throw an error

2 Comments

@DrorBar in C#, method names follow PascalCase. substring() won't compile because the method is called Substring()
@DavidKlempfner My bad I thought this is JavaScript.
19

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.

3 Comments

And for better readability, you can use "". It compiles exactly the same as string.Empty these days.
It does not, "" creates a new string, while string.Empty references one. It doesn't really matter in terms of performance (I mean it's one empty string so yeah...) but just wanted to point that out :)
"" does indeed not create a new string, see here stackoverflow.com/a/263257/604613
14

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.

Comments

7

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..];

1 Comment

C# 8 is not supported when targeting .NET Framework.
6

The Substring has a parameter called startIndex. Set it according to the index you want to start at.

Comments

4

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);
   }

Comments

3

Use substring method.

string s = "hello world";
s=s.Substring(10, s.Length-10);

1 Comment

throws exception if string is shorter than starting index
1

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)));

1 Comment

currently it returns the last character from the string if the string is less that 10 characters long.
1

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.

Comments

1

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.

Comments

1

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();
}

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.