Come ottenere la sottostringa in C #?

Posso ottenere i primi tre caratteri con la funzione seguente.

Tuttavia, come posso ottenere l’output degli ultimi cinque caratteri ( tre ) con la funzione Substring() . Oppure verrà utilizzata un’altra funzione di stringa?

 static void Main() { string input = "OneTwoThree"; // Get first three characters string sub = input.Substring(0, 3); Console.WriteLine("Substring: {0}", sub); // Output One. } 

Se la stringa di input può essere inferiore a cinque caratteri, è necessario tenere presente che string.Substring genererà ArgumentOutOfRangeException se l’argomento startIndex è negativo.

Per risolvere questo potenziale problema è ansible utilizzare il seguente codice:

 string sub = input.Substring(Math.Max(0, input.Length - 5)); 

O più esplicitamente:

 public static string Right(string input, int length) { if (length >= input.Length) { return input; } else { return input.Substring(input.Length - length); } } 
 string sub = input.Substring(input.Length - 5); 

Se è ansible utilizzare i metodi di estensione, questo lo farà in modo sicuro, indipendentemente dalla lunghezza della stringa:

 public static string Right(this string text, int maxLength) { if (string.IsNullOrEmpty(text) || maxLength <= 0) { return string.Empty; } if (maxLength < text.Length) { return text.Substring(text.Length - maxLength); } return text; } 

E per usarlo:

 string sub = input.Right(5); 
 static void Main() { string input = "OneTwoThree"; //Get last 5 characters string sub = input.Substring(6); Console.WriteLine("Substring: {0}", sub); // Output Three. } 

Sottostringa (0, 3) Restituisce la sottostringa dei primi 3 caratteri. //Uno

Sottostringa (3, 3) Restituisce la sottostringa dei secondi 3 caratteri. //Due

Sottostringa (6) Restituisce la sottostringa di tutti i caratteri dopo il primo 6. // Tre

Un modo è utilizzare la proprietà Length della stringa come parte dell’input di Substring :

 string sub = input.Substring(input.Length - 5); // Retrieves the last 5 characters of input 

Ecco un metodo di estensione rapida che puoi usare che simula la syntax PHP. Includi AssemblyName.Extensions nel file di codice in cui stai utilizzando l’estensione.

Quindi è ansible chiamare: input.SubstringReverse (-5) e restituirà “Tre”.

namespace AssemblyName.Extensions {

 public static class StringExtensions { ///  /// Takes a negative integer - counts back from the end of the string. ///  ///  ///  public static string SubstringReverse(this string str, int length) { if (length > 0) { throw new ArgumentOutOfRangeException("Length must be less than zero."); } if (str.Length < Math.Abs(length)) { throw new ArgumentOutOfRangeException("Length cannot be greater than the length of the string."); } return str.Substring((str.Length + length), Math.Abs(length)); } } 

}

per esempio

  string str = null; string retString = null; str = "This is substring test"; retString = str.Substring(8, 9); 

Questa “sottostringa” di ritorno

Sorgente di esempio della sottostringa C #:

il modo semplice per farlo in una riga di codice sarebbe questo

 string sub = input.Substring(input.Length > 5 ? input.Length - 5 : 0); 

e qui alcune informazioni su Operator? :

 string input = "OneTwoThree"; (if input.length >5) { string str=input.substring(input.length-5,5); } 

Sottostringa. Questo metodo estrae le stringhe. Richiede la posizione della sottostringa (un indice iniziale, una lunghezza). Quindi restituisce una nuova stringa con i caratteri nell’intervallo.

Guarda un piccolo esempio:

 string input = "OneTwoThree"; // Get first three characters. string sub = input.Substring(0, 3); Console.WriteLine("Substring: {0}", sub); 

Uscita: sottostringa: uno

  // Get first three characters string sub = input.Substring(0, 3); Console.WriteLine("Substring: {0}", sub); // Output One. string sub = input.Substring(6, 5); Console.WriteLine("Substring: {0}", sub); //You'll get output: Three