Avatar billede bimmer123 Nybegynder
17. maj 2007 - 20:24 Der er 11 kommentarer og
1 løsning

Trimme et filnavn hentet fra XML med XPath

Hej Eksperter,

Jeg er rimelig grøn til ASP.Net og sidder ny med et problem der gør vrøvl.

Jeg henter en masse info fra et XML feed og binder det til en DataList, der virker alt sammen fint.

Problemet at en de ting jeg henter, er en url sti til et billede. Denne sti skal trimmes, hvordan gør man det?

Min Control ser sådan ud:
<asp:Image ID="Image1" runat="server" AlternateText='<%# XPath("ProductName") %>' ImageUrl='<%# XPath("ProductImageURL", %>' />

ProductImageURL returnere en sti i formatet:
http://www.test.dk/images/size/123456700000.jpg

Jeg skal så fjerne de bagereste 5 nuller for at filnavnet bliver korrekt, så trien returneret bliver til:
http://www.test.dk/images/size/1234567.jpg


HJÆLP!
Avatar billede kalp Novice
17. maj 2007 - 20:28 #1
er filnavnet altid så langt?
123456700000.jpg

?
Avatar billede bimmer123 Nybegynder
17. maj 2007 - 20:31 #2
ja, filnavnet er altid på 12 numre, og jeg skal så fjerne de 5 bagerste for at få det til at virke...
Avatar billede kalp Novice
17. maj 2007 - 20:58 #3
du kan sende din image sti til denne metode.. og så får du den formatteret tilbage.

        private string Trim(string url)
        {
            string newString = string.Empty;
            string[] parts = url.Split('/');
            string filename = parts[parts.Length-1];
            string newFilename = filename.Substring(0, 7);
            newFilename += filename.Substring(12, 4);
            parts[parts.Length-1] = newFilename;
            foreach (string part in parts)
                newString += part+"/";
            return newString.Remove(newString.LastIndexOf('/'));
        }
Avatar billede kalp Novice
17. maj 2007 - 20:59 #4
det kan gøres på mindre kode linjer, men nu lavedede jeg bare det som jeg havde lyst til.

Du behøver som sagt ikke tænke over koden.. bare smid hele metoden ind og send din ProductImageUrl til den som en string.. og så får den tilbage korrekt.
Avatar billede kalp Novice
17. maj 2007 - 21:02 #5
hvis du ved at hele stien til et billede altid ser ud som det eksempel du har vist, og der ikke forekommer fem nuller i træk andre steder i stien.. så kan du også nøjes med denne linje kode.


ProductImageUrl.Replace("00000", "");
Avatar billede bimmer123 Nybegynder
17. maj 2007 - 21:31 #6
Nu henter jeg jo stien emd XPath, er der ikke en eller anden smart måde jeg kan formatere den direkte med XPath?

De tal jeg skal fjerne er ikke altid 0'er
Avatar billede kalp Novice
17. maj 2007 - 21:37 #7
hvis det ikke altid er nuller så virker den metode jeg har lagt til dig..
tror ikke du kan formattere det direkte med xpath.. men hvis du bruger min metode fra før.. så kan du jo gøre således.

<asp:Image ID="Image1" runat="server" AlternateText='<%# XPath("ProductName") %>' ImageUrl='<%# Trim(XPath("ProductImageURL")) %>' />
Avatar billede bimmer123 Nybegynder
17. maj 2007 - 21:44 #8
Ok, men jeg får den her fejl når jeg prøver det:

Compiler Error Message: CS0122: '_Default.Trim(string)' is inaccessible due to its protection level
Avatar billede kalp Novice
17. maj 2007 - 21:50 #9
public static string Trim(string url)
        {
            string newString = string.Empty;
            string[] parts = url.Split('/');
            string filename = parts[parts.Length-1];
            string newFilename = filename.Substring(0, 7);
            newFilename += filename.Substring(12, 4);
            parts[parts.Length-1] = newFilename;
            foreach (string part in parts)
                newString += part+"/";
            return newString.Remove(newString.LastIndexOf('/'));
        }
Avatar billede bimmer123 Nybegynder
17. maj 2007 - 21:52 #10
Compiler Error Message: CS1502: The best overloaded method match for '_Default.Trim(string)' has some invalid arguments
Avatar billede kalp Novice
17. maj 2007 - 21:55 #11
jeg ved ikke hvad din XPath("ProductImageURL") returnere, men i hvertfald så bliver der ikke sendt en string til min metode hvilket er derfor den fejler..
Avatar billede arne_v Ekspert
31. marts 2008 - 02:56 #12
XPath("ProductImageURL").InnerText eller XPath("ProductImageURL").ToString() var da
et par bud.

Iøvrigt må man kunne spare Split og Join ved bare at regne baglæns udfra url.Length !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester