Come ignorare i primi 10 caratteri di una stringa?
Ingresso:
str = "hello world!";
Produzione:
d!
Come ignorare i primi 10 caratteri di una stringa?
Ingresso:
str = "hello world!";
Produzione:
d!
Risposte:
str = "hello world!";
str.Substring(10, str.Length-10)
dovrai eseguire i controlli di lunghezza altrimenti questo genererebbe un errore
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.
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.
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.
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);
}
Usa il metodo della sottostringa.
string s = "hello world";
s=s.Substring(10, s.Length-10);
È 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)));
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.
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.
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.
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();
}