79 votes

Équivalent .Net de l’ancienne fonction vb left (chaîne, longueur)?

En tant que non .net programmeur, je suis à la recherche pour le .net équivalent de l'ancien vb fonction left(string, length). Il était paresseux dans lesquelles il a travaillé, pour toute longueur de la chaîne. Comme prévu, left("foobar", 3) = "foo" tandis que, plus utilement, left("f", 3) = "f".

Dans .net string.Substring(index, length) lève des exceptions pour tout ce qui sort de gamme. En Java, j'ai toujours eu l'Apache Commons lang.StringUtils à portée de main. Dans Google, je ne suis pas très loin de la recherche pour les fonctions de chaîne.

Edit:

@Noldorin - Wow, merci pour votre vb.net extensions! Ma première rencontre, bien qu'il m'a fallu plusieurs secondes pour faire la même chose en c#:

public static class Utils
{
    public static string Left(this string str, int length)
    {
        return str.Substring(0, Math.Min(length, str.Length));
    }
}

Remarque la statique de la classe et de la méthode ainsi que l' this mot-clé. Oui, ils sont aussi simple à invoquer comme "foobar".Left(3). Voir aussi c# extensions sur msdn.

60voto

Noldorin Points 67794

Voici une méthode d'extension qui fera le travail.

 <System.Runtime.CompilerServices.Extension()> _
Public Function Left(ByVal str As String, ByVal length As Integer) As String
    Return str.Substring(0, Math.Min(str.Length, length))
End Function
 

Cela signifie que vous pouvez l’utiliser exactement comme l’ancienne fonction VB Left (c’est-à-dire Left("foobar", 3) ) ou en utilisant la nouvelle syntaxe VB.NET, c’est-à-dire

 Dim foo = "f".Left(3) ' foo = "f"
Dim bar = "bar123".Left(3) ' bar = "bar"
 

40voto

Oded Points 271275

Une autre option d'une ligne serait quelque chose comme ce qui suit:

 myString.Substring(0, Math.Min(length, myString.Length))
 

Où myString est la chaîne avec laquelle vous essayez de travailler.

36voto

Garry Shutler Points 20898

Ajouter une référence à la bibliothèque Microsoft.VisualBasic et vous pouvez utiliser le Strings.Left qui est exactement la même méthode.

18voto

CCondron Points 342

n'oubliez pas le cas nul

   public static string Left(this string str, int count)
    {
        if (string.IsNullOrEmpty(str) || count < 1) 
            return string.Empty;
        else
            return str.Substring(0,Math.Min(count, str.Length));
    }
 

6voto

vous pourriez faire votre propre

 private string left(string inString, int inInt)
{
    if (inInt > inString.Length)
        inInt = inString.Length;
    return inString.Substring(0, inInt);
}
 

edit: le mien est en C #, vous devrez le changer pour vb

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X