Come rimuovere i primi 10 caratteri da una stringa?


92

Come ignorare i primi 10 caratteri di una stringa?

Ingresso:

str = "hello world!";

Produzione:

d!

9
string.Substring (9); dove 9 è l'indice iniziale
Waqas

Ricordati di controllare prima che la stringa abbia almeno 10 caratteri o otterrai un'eccezione.
Jonathan

Perché la sottostringa non supporta (startIndex, endindex)? ogni volta che dobbiamo calcolare la lunghezza .. :-(
Sangram Nandkhile

1
@Waqas: in realtà è str.Substring (10), il parametro è la posizione da cui inizia l'estrazione della sottostringa
Răzvan Flavius ​​Panda

Risposte:


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

dovrai eseguire i controlli di lunghezza altrimenti questo genererebbe un errore


214

str = str.Remove(0,10); Rimuove i primi 10 caratteri

o

str = str.Substring(10); Crea una sottostringa a partire dall'undicesimo carattere fino alla fine della stringa.

Per i tuoi scopi dovrebbero funzionare in modo identico.


16

La sottostringa è probabilmente quello che vuoi, come altri hanno sottolineato. Ma solo per aggiungere un'altra opzione al mix ...

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

Non hai nemmeno bisogno di controllare la lunghezza su questo! :) Se è inferiore a 10 caratteri, ottieni una stringa vuota.


E per una migliore leggibilità, puoi usare "". Compila esattamente come string.Empty in questi giorni.
PRMan

10

Substring ha due metodi di sovraccarico:

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.

Quindi, per questo scenario, puoi utilizzare il primo metodo come questo di seguito:

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

Qui l'output è:

d!

Se puoi applicare la codifica difensiva controllandone la lunghezza.


5

Il Substringha un parametro chiamato startIndex. Impostalo in base all'indice da cui vuoi iniziare.


3

Puoi rimuovere il carattere usando la riga sotto,

: - Per prima cosa controlla che la stringa abbia abbastanza caratteri da rimuovere , come

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


1

È possibile utilizzare il metodo Substring metodo che accetta un singolo parametro, che è l'indice da cui iniziare.

Nel mio codice qui sotto mi occupo del caso in cui la lunghezza è inferiore all'indice iniziale desiderato e quando la lunghezza è zero.

string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));

attualmente restituisce l'ultimo carattere della stringa se la stringa è lunga meno di 10 caratteri.
Răzvan Flavius ​​Panda

1

Per:

var str = "hello world!";

Per ottenere la stringa risultante senza i primi 10 caratteri e una stringa vuota se la stringa è minore o uguale in lunghezza a 10 puoi usare:

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

o

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

È preferibile la prima variante poiché richiede un solo parametro del metodo.


1

Non è necessario specificare la lunghezza nel Substringmetodo. Perciò:

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

p sarà:

"lo world".

L'unica eccezione che devi soddisfare è ArgumentOutOfRangeExceptionse startIndexè minore di zero o maggiore della lunghezza di questa istanza.


0

A partire da C # 8, puoi semplicemente usare Range Operator. È il modo più efficiente e migliore per gestire questi casi.

string AnString = "Hello World!";
AnString = AnString[10..];

C# 8non è supportato durante il targeting .NET Framework.
l33t

0

La chiamata SubString()alloca una nuova stringa. Per prestazioni ottimali, è necessario evitare tale allocazione aggiuntiva. Iniziando con C# 7.2puoi sfruttare il pattern Span .

Durante il targeting .NET Framework, includi il pacchetto System.Memory NuGet . Per i .NET Coreprogetti questo funziona fuori dagli schemi.

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();
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.