¿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!

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


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.


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.


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.


6

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


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


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

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.


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.


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

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();
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.