web-dev-qa-db-fra.com

Comment obtenir la sous-chaîne en C #?

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. 
}
49
Nano HE

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);
    }
}
69
Mark Byers
string sub = input.Substring(input.Length - 5);
14
kennytm

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

8
Mehdi

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
2
Blair Holloway

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

}

2
Payson Welch

par exemple.

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

Ce retour "sous-chaîne"

source d'échantillon de sous-chaîne C #:

0
craiglimpo

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

0
anand360

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?:

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