MaClasseUtilitaire toto= new MaClasseUtilitaire(); toto.MaFonction(a,b,c);est la syntaxe de base de tout programme C#.
MonEspaceDeNom.MaClasseUtilitaire.MaFonction(x,y,z);ne fonctionne que si est seulement si MaFonction est static. (Comme Math.Cos() par exemple.
public string Left(string what, int len) { return what.substr(0, len); }
je la pratique depuis plus de 20 ans en Visual Basic
string droite = "Ce texte sera coupé au 10eme caractères".SubString(0,10);est au final moins long à écrire
string droite = "Ce texte sera coupé au 10eme caractères".Left(10);
public class StringEx : String { string Left(string what) { return what.Substring(0, what.Length); } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionpublic static class Extension { }
public static type NomDeLaMethode(this type1 Variable1, type2 Variable2, etc..)
public static class Extension { public static string Left(this string Texte, int Longueur) { return Texte.Substring(0, Longueur); } //allé Right en prime public static string Right(this string Texte, int Longueur) { return Texte.Substring(Texte.Length - Longueur); } }
Par contre, il y a un truc qui m'interpelle : On ne précise pas de quelle classe mère celle-ci est l'extension., si le fait de mettre this devant le type du premier argument définit à la fois qu'il s'agit d'une extension et le type associé est le type étendu.
Malgré tout, je cherchais au départ à utiliser des fonctions "autonomes", et je vois que ce n'est pas possible.non, tout est objet, même là
"Ce texte sera coupé au 10eme caractères".SubString(0,10)le texte dans le code est déjà une instance de string. (Ca marche aussi avec les nombres, mais Intellisense ne sait pas interpréter quand on tape le . si on veut utiliser une méthode ou écrire un nombre décimal).
mais déjà en simple, j'avais une fonction de ce genre qui vérifiait la présence d'un slash en fin de chaine et qui l'enlevait dans ce cas. Ca évite bien des erreurs de double slash dans les chemins construits dynamiquement
string toto = Path.GetDirectoryName(@"C:\temp\");
string toto = @"C:\temp\\coucou\"; //string toto = @"C:\temp\\coucou\hello.txt"; string ext = Path.GetExtension(toto); string res; if (ext == "") res = Path.GetFullPath(toto); else res = Path.GetDirectoryName(toto);
string toto = @"C:\temp\\coucou\"; //string toto = @"C:\temp\\coucou\hello.txt"; string res = Path.GetExtension(toto) == "" ? Path.GetFullPath(toto):Path.GetDirectoryName(toto);
public string DeleteLastSlash(string sPath)
{
if(sPath.substr(sPath, sPath.length - 1) == "\\")
return sPath.substr(0, sPath.length - 1);
else
return sPath;
}
if(sPath[sPath.length - 1] == '\\')
public string DeleteLastSlash(string sPath){return sPath[sPath.length-1]=='\\'?sPath.substr(0,sPath.length-1):sPath;}
string tata = Path.Combine(@"C:\temp", "coucou", "hello");en récupérant coucou et hello, on fait un replace du slash par rien et ça marche. (Alors oui ça ne marche pas pour C:\temp, mais c'est juste un exemple)
bool test = "est ce que cette chaine finit par hello".EndsWith("hello");
bool test2 = "est ce que cette chaine finit par o".Last() == 'o';
((^[a-z0-9])(([a-z0-9_-]+)|(([a-z0-9_-]+)[\.]([a-z0-9_-]+)))[@]([a-z0-9-]+)[\-]?([a-z0-9-]+)[\.](([a-z]+)[\.]?([a-z]+)))
^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$
Et puis, il y a des tonnes de sites où l'on trouve des trucs sur le C# et la manière d'arriver à ce qu'on veut.oui, mais le dernier site que je t'ai proposé permets de tester les regex telles qu'elles sont implémentées dans .Net.