¿Cómo eliminar los primeros 10 caracteres de una cadena?

93

¿Cómo ignorar los primeros 10 caracteres de una cadena?

Entrada:

str = "hello world!";

Salida:

d!
csharper
fuente
9
string.Substring (9); donde 9 es el índice de inicio
Waqas
Recuerde verificar primero que la cadena tenga al menos 10 caracteres o obtendrá una excepción.
Jonathan
¿Por qué la subcadena no admite (startIndex, endindex)? cada vez que tenemos que calcular la longitud .. :-(
Sangram Nandkhile
1
@Waqas: en realidad es str.Substring (10), el parámetro es la posición desde la cual comienza a extraerse la subcadena
Răzvan Flavius ​​Panda

Respuestas:

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

deberá realizar las comprobaciones de longitud, de lo contrario, esto arrojaría un error

V4Vendetta
fuente
216

str = str.Remove(0,10); Elimina los primeros 10 caracteres

o

str = str.Substring(10); Crea una subcadena que comienza en el undécimo carácter hasta el final de la cadena.

Para sus propósitos, deberían funcionar de manera idéntica.

crlanglois
fuente
16

La subcadena es probablemente lo que desea, como señalaron otros. Pero solo para agregar otra opción a la mezcla ...

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

¡Ni siquiera necesitas verificar la longitud de esto! :) Si tiene menos de 10 caracteres, obtendrá una cadena vacía.

UrbanEsc
fuente
Y para una mejor legibilidad, puede utilizar "". Se compila exactamente igual que string.Empty en estos días.
PRMan
No lo hace, "" crea una nueva cadena, mientras que string.Empty hace referencia a una. Realmente no importa en términos de rendimiento (quiero decir que es una cadena vacía, así que sí ...) pero solo quería señalar eso :)
Zer0
11

Substring tiene dos 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.

Entonces, para este escenario, puede usar el primer método como este a continuación:

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

Aquí la salida es:

d!

Si puede aplicar la codificación defensiva comprobando su longitud.

Rousonur Jaman
fuente
6

El Substringtiene un parámetro llamado startIndex. Configúrelo de acuerdo con el índice en el que desea comenzar.

Sascha
fuente
3

Puede eliminar Char usando debajo de la línea,

: - Primero verifique que la cadena tenga suficientes caracteres para eliminar , como

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

Utilice el método de subcadena.

string s = "hello world";
s=s.Substring(10, s.Length-10);
Ashley John
fuente
2
lanza una excepción si la cadena es más corta que el índice inicial
Răzvan Flavius ​​Panda
1

Puede utilizar el método Substring método que toma un solo parámetro, que es el índice para comenzar.

En mi código a continuación, trato el caso en el que la longitud es menor que el índice de inicio deseado y cuando la longitud es cero.

string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));
George Duckett
fuente
actualmente devuelve el último carácter de la cadena si la cadena tiene menos de 10 caracteres.
Răzvan Flavius ​​Panda
1

Por:

var str = "hello world!";

Para obtener la cadena resultante sin los primeros 10 caracteres y una cadena vacía si la cadena tiene una longitud menor o igual a 10, puede usar:

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

o

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

Se prefiere la primera variante ya que solo necesita un parámetro de método.

Panda Răzvan Flavius
fuente
1

No es necesario especificar la longitud en el Substringmétodo. Por lo tanto:

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

p estarán:

"lo mundo".

La única excepción a la que debe atender es ArgumentOutOfRangeExceptionsi startIndexes menor que cero o mayor que la longitud de esta instancia.

alex leo
fuente
0

A partir de C # 8, simplemente puede usar Range Operator. Es la forma más eficiente y mejor de manejar estos casos.

string AnString = "Hello World!";
AnString = AnString[10..];
Príncipe Pandey
fuente
C# 8no es compatible con la orientación .NET Framework.
l33t
0

Llamar SubString()asigna una nueva cadena. Para un rendimiento óptimo, debe evitar esa asignación adicional. Comenzando por C# 7.2, puede aprovechar el patrón Span .

Al apuntar .NET Framework, incluya el paquete System.Memory NuGet . Para .NET Coreproyectos, esto funciona de manera inmediata.

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
fuente