Je veux fondamentalement vérifier si une partie d'une chaîne commence par une certaine séquence - dans ce cas, ftp: //, ou http: //. Comment ferais-je cela?C# - si les déclarations contre les parties d'une chaîne
Merci
Je veux fondamentalement vérifier si une partie d'une chaîne commence par une certaine séquence - dans ce cas, ftp: //, ou http: //. Comment ferais-je cela?C# - si les déclarations contre les parties d'une chaîne
Merci
Utilisez String.StartsWith
. Avec seulement deux préfixes possibles, vous pouvez l'écrire comme suit:
if (s.StartsWith("http://") || s.StartsWith("ftp://")) { ... }
Si vous avez beaucoup de différents préfixes possibles, il pourrait être préférable d'utiliser une boucle ou une expression LINQ à la place. Par exemple:
string[] prefixes = { "http://", "ftp://", /* etc... */ };
if (prefixes.Any(prefix => s.StartsWith(prefix)))
{
// ...
}
Belle utilisation de LINQ –
seconded ... Appréciez l'utilisation de LINQ ici – Xander
if(myString.StartsWith("ftp://") || myString.StartsWith("http://")) { }
si vous le souhaitez ignorer le cas utilisez StringComparison.OrdinalIgnoreCase.
if(myString.StartsWith("ftp://", StringComparison.OrdinalIgnoreCase) || myString.StartsWith("http://", StringComparison.OrdinalIgnoreCase)) { }
Si vous souhaitez ignorer le cas, il serait préférable d'utiliser: myString.StartsWith ("ftp: //", StringComparison.OrdinalIgnoreCase); –
@Dylan - tout à fait raison dans ce scénario, je vais mettre à jour la réponse. –
Personnellement, je vous suggère l'utilisation Regex, mais la forme la plus fondamentale est
string myText = @"http://blabla.com";
if (myText.IndexOf("http://") == 0 || myText.IndexOf("ftp://") == 0))
{
//dosome
}
Regex ne serait pas moins performant que StartsWith/IndexOf? –
@ Øyvind, dans ce cas, il le ferait probablement, mais dans un cas plus général, il pourrait bien être plus performant, en fonction de la complexité du test requis. –
vrai; la performance va baisser, mais habituellement vous commencez avec .. Je veux savoir de http est une partie de la chaîne .. et vous finissez avec: J'ai besoin de savoir si l'URL est valide – riffnl
if(myString.StartsWith("ftp://")){
...
}
similaires si vous voulez vérifier http: //, mais changer le paramètre à StartsWith.
Vous devez utiliser la méthode String.StartsWith.
Trop facile ... préparer le déluge! – Polyfun
Relecture de cette question Je me demande si par "* partie d'une chaîne * commence par une certaine séquence", il signifie que la chaîne doit contenir une sous-chaîne qui commence par ftp: //? –