Je peux obtenir les trois premiers caractères avec la fonction ci-dessous.
Cependant, comment puis-je obtenir la sortie des cinq derniers caractères (Three) avec la fonction Substring()
. Ou une autre fonction de chaîne sera utilisée?
static void Main()
{
string input = "OneTwoThree";
// Get first three characters
string sub = input.Substring(0, 3);
Console.WriteLine("Substring: {0}", sub); // Output One.
}
Si votre chaîne d’entrée peut contenir moins de cinq caractères, sachez que string.Substring
jettera un ArgumentOutOfRangeException
si l'argument startIndex
est négatif.
Pour résoudre ce problème potentiel, vous pouvez utiliser le code suivant:
string sub = input.Substring(Math.Max(0, input.Length - 5));
Ou plus explicitement:
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);
Si vous pouvez utiliser des méthodes d'extension, cela le fera de manière sécurisée, quelle que soit la longueur de la chaîne:
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;
}
Et pour l'utiliser:
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.
}
Sous-chaîne (0, 3) Renvoie la sous-chaîne des 3 premiers caractères. //Une
Substring (3, 3) Renvoie la sous-chaîne des 3 derniers caractères. //Deux
Sous-chaîne (6) Retourne la sous-chaîne de tous les caractères après le premier 6. // Trois
Une solution consiste à utiliser la propriété Length
de la chaîne dans le cadre de l'entrée pour Substring
:
string sub = input.Substring(input.Length - 5); // Retrieves the last 5 characters of input
Voici une méthode d'extension rapide que vous pouvez utiliser avec la syntaxe suivante: PHP syntaxe. Inclure AssemblyName.Extensions dans le fichier de code dans lequel vous utilisez l'extension.
Ensuite, vous pouvez appeler: input.SubstringReverse (-5) et il retournera "Trois".
espace de noms AssemblyName.Extensions {
public static class StringExtensions
{
/// <summary>
/// Takes a negative integer - counts back from the end of the string.
/// </summary>
/// <param name="str"></param>
/// <param name="length"></param>
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));
}
}
}
par exemple.
string str = null;
string retString = null;
str = "This is substring test";
retString = str.Substring(8, 9);
Ce retour "sous-chaîne"
Sous-chaîne. Cette méthode extrait des chaînes. Cela nécessite l'emplacement de la sous-chaîne (un index de début, une longueur). Il renvoie ensuite une nouvelle chaîne avec les caractères dans cette plage.
Voir un petit exemple:
string input = "OneTwoThree";
// Get first three characters.
string sub = input.Substring(0, 3);
Console.WriteLine("Substring: {0}", sub);
Sortie: Sous-chaîne: une
un moyen simple de faire cela dans une ligne de code serait la suivante:
string sub = input.Substring(input.Length > 5 ? input.Length - 5 : 0);
et voici quelques informations sur Operator?:
string input = "OneTwoThree";
(if input.length >5)
{
string str=input.substring(input.length-5,5);
}