2013-07-29 4 views
2

J'ai échantillon url http://citrine.rcd.dev:8080/image/1582_125x125.jpgRegex pour ce match

Il est construit avec le code:

public string GetDerivativeUrl(long imageId, bool preserveTransparency, DerivativeSize size, bool allowCache, string designTags, int quality) 
    { 
     string tags = (designTags == null || designTags.Trim().Length == 0) ? "" : designTags; 
     string imageFormat = (preserveTransparency) ? "png" : "jpg"; 
     if (quality > 0) 
      return String.Format("{0}/image/{4}{1}_{2}.{3}?qv={5}", GetUrlPrefix(imageId, allowCache), imageId, size.GetPixelSize(), imageFormat, tags, quality); 
     return String.Format("{0}/image/{4}{1}_{2}.{3}", GetUrlPrefix(imageId, allowCache), imageId, size.GetPixelSize(), imageFormat, tags); 
    } 

Je veux obtenir http://citrine.rcd.dev:8080/image/1582.jpg de http://citrine.rcd.dev:8080/image/1582_125x125.jpg

Comment puis-je faire?

+0

ce qui ne va pas avec le retour 'String.Format ("{0}/image/{3} {1} {2}.", GetUrlPrefix (imageId, allowCache), ImageID, ImageFormat, étiquettes);'? – sehe

+0

Alors voulez-vous changer la chaîne après qu'elle a été créée dans cette méthode ou voulez-vous changer la méthode afin qu'elle renvoie la chaîne que vous voulez? – sloth

Répondre

1

Utilisez System.Uri pour obtenir la partie du nom de fichier du chemin, puis remplacer "_.*?\." par "."

1

Vous pouvez le faire au lieu d'utiliser une expression régulière.

string url = @"http://citrine.rcd.dev:8080/image/1582_125x125.jpg"; 
int index = url.LastIndexOf('_'); 
if (index != -1) 
    url = url.Substring(0, index) + Path.GetExtension(url);