Como remover os primeiros 10 caracteres de uma string?

92

Como ignorar os primeiros 10 caracteres de uma string?

Entrada:

str = "hello world!";

Resultado:

d!
csharper
fonte
9
string.Substring (9); onde 9 é o índice de início
Waqas
Lembre-se de verificar primeiro se a string tem pelo menos 10 caracteres ou você obterá uma exceção.
Jonathan
Por que não há suporte para substring (startIndex, endindex)? toda vez que temos que calcular o comprimento .. :-(
Sangram Nandkhile
1
@Waqas: na verdade é str.Substring (10), o parâmetro sendo a posição da qual a substring começa a ser extraída
Răzvan Flavius ​​Panda

Respostas:

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

você precisará realizar as verificações de comprimento; caso contrário, isso geraria um erro

V4Vendetta
fonte
214

str = str.Remove(0,10); Remove os primeiros 10 caracteres

ou

str = str.Substring(10); Cria uma substring começando no 11º caractere até o final da string.

Para seus objetivos, eles devem funcionar de forma idêntica.

Crlanglois
fonte
16

O substring é provavelmente o que você deseja, como outros apontaram. Mas só para adicionar outra opção ao mix ...

string result = string.Join(string.Empty, str.Skip(10));

Você nem precisa verificar o comprimento disso! :) Se for menor que 10 caracteres, você obtém uma string vazia.

UrbanEsc
fonte
E para melhor legibilidade, você pode usar "". Compila exatamente o mesmo que string.Empty atualmente.
PRMan de
10

Substring tem dois métodos de sobrecarga:

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.

Portanto, para este cenário, você pode usar o primeiro método como este abaixo:

var str = "hello world!";
str = str.Substring(10);

Aqui, o resultado é:

d!

Se você pode aplicar a codificação defensiva, verificando seu comprimento.

Rousonur Jaman
fonte
5

O Substringtem um parâmetro chamado startIndex. Defina-o de acordo com o índice em que deseja iniciar.

Sascha
fonte
3

Você pode remover o caractere usando a linha abaixo,

: - Primeiro verifique se a String tem caracteres suficientes para remover , como

   string temp="Hello Stack overflow";
   if(temp.Length>10)
   {
    string textIWant = temp.Remove(0, 10);
   }
Snack'Eyes
fonte
1

Use o método substring.

string s = "hello world";
s=s.Substring(10, s.Length-10);
Ashley John
fonte
2
lança exceção se a string for menor do que o índice inicial
Răzvan Flavius ​​Panda
1

Você pode usar o método Substring , que usa um único parâmetro, que é o índice a partir do qual começar.

No meu código abaixo, eu lido com o caso em que o comprimento é menor do que o índice inicial desejado e quando o comprimento é zero.

string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));
George Duckett
fonte
atualmente, ele retorna o último caractere da string se a string tiver menos de 10 caracteres.
Răzvan Flavius ​​Panda
1

Para:

var str = "hello world!";

Para obter a string resultante sem os primeiros 10 caracteres e uma string vazia se a string for menor ou igual a 10, você pode usar:

var result = str.Length <= 10 ? "" : str.Substring(10);

ou

var result = str.Length <= 10 ? "" : str.Remove(0, 10);

A primeira variante é preferida, pois precisa de apenas um parâmetro de método.

Răzvan Flavius ​​Panda
fonte
1

Não há necessidade de especificar o comprimento do Substringmétodo. Portanto:

string s = hello world;
string p = s.Substring(3);

p será:

"lo mundo".

A única exceção que você precisa atender é ArgumentOutOfRangeExceptionse startIndexfor menor que zero ou maior que o comprimento desta instância.

alex leo
fonte
0

A partir do C # 8, você simplesmente pode usar o Range Operator. É a maneira mais eficiente e melhor de lidar com esses casos.

string AnString = "Hello World!";
AnString = AnString[10..];
Príncipe pandey
fonte
C# 8não é compatível com a segmentação .NET Framework.
l33t
0

Chamar SubString()aloca uma nova string. Para obter o desempenho ideal, você deve evitar essa alocação extra. Começando com, C# 7.2você pode tirar vantagem do padrão Span .

Ao direcionar .NET Framework, inclua o pacote System.Memory NuGet . Para .NET Coreprojetos, isso funciona fora da caixa.

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