Jag får inte till att göra en siffra till att ersättas med bilder Jag kan hjälpa dig, om du bara förklarar lite bättre vad du vill åstadkomma... Tack! Har hittat en lösning, men jag anser att den är lite omständig, jag förstår helt enkelt inte varför man måste göra som man gör. <code>//C# Följande ska göra samma sak som din kod, fast den är mycket enklare... Det var så lite så, säg till om du behöver mer hjälp med RegEx eller annat!Siffror till bilder med regexp
Skulle vilja göra det med RegExp, men får inte till det
Tex om jag vill visa 12 (tolv) skall resultatet bli:
<code>
<img src="images/1.gif"><img src="images/2.gif">
</code>
Är helt enkelt osäker på hur man hanterar RegExp objektet i asp.net Sv: Siffror till bilder med regexp
Alltså, hur ska texten se ut före och efter ersättning?
Mvh,
ThomasSv: Siffror till bilder med regexp
Jag hade tänkt mig en funktion där jag skickar in ett tal och returnerar en sträng med htmlkod för att få ut siffrorna som bilder (img-taggarna)
Det jag vill är att visa gifbilder på siffror istf ren text (ungefär som en del räknare fungerar)
Detta skall bli till en sida som skall läggas ut på tv-skärm och visa aktuell statistik för vissa värden
Jag hittade denna artikel: http://www.4guysfromrolla.com/webtech/121300-1.shtml som beskriver en funktion
<code>
Function ConstructDigits(iValue)
Dim iLoop, strResults
For iLoop = (Len(iValue) - 1) to 0 STEP -1
strResults = strResults & "<img src=""/digits/" & _
Mid(CStr(iValue),Len(iValue) - iLoop,1) & ".gif"" border=0>"
Next
ConstructDigits = strResults
End Function
</code>
Men jag skulle hellre vilja börja lära mig om RegExp och hur det hanteras under VB.NET
Sidan ovan visade ett javascriptbaserat exempel så att koden ovan kunde ersättas med:
<code>
(iValue + "").replace(/([0-9])/g, '<img src="$1.gif">' )
</code>
Men jag får inte till det (översätta det) i vb.net...
Tack på förhand.Sv: Siffror till bilder med regexp
Varför är jag tvungen att använda en speciell funktion som anropas med AddressOf ?
Kan någon förklara vore jag mycket tacksam. (Är antagligen helt insnöad vad det gäller RegEx hantering överhuvud taget till att börja med, men jag tyckte att javascript exemplet ovan såg så enkelt ut....)
<code>
Private Sub cmdRegExp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRegExp.Click
Dim objRegExp As New Regex("([0-9])")
Dim strR As String
strR = objRegExp.Replace(txtNumber.Text, AddressOf ChangeToImage)
lblRegExp.Text = strR
End Sub
Private Function ChangeToImage(ByVal m As Match) As String
Return m.ToString().Replace(m.Groups(1).ToString, "<img src=""images/" & m.Groups(1).ToString & ".gif"">")
End Function
</code>
Fråga 2:
Går det att lägga funktionen ChangeToImage i en klass fil och anropa den från vilken aspx sida som helst? Får det inte att funka genom att lägga in den i en vb-fil (som Public Function) och anropa den.Sv: Siffror till bilder med regexp
private string MakeImages(int i)
{
StringBuilder sb = new StringBuilder();
char[] chars = i.ToString().ToCharArray();
foreach(char c in chars)
{
sb.Append("<img src='/digits/");
sb.Append(c.ToString());
sb.Append(".gif' />");
}
return sb.ToString();
}
//VB.NET (snabb översatt från c# koden så det kan finnas fel)
Function MakeImages(ByVal i As Integer) As String
dim sb as new StringBuilder()
dim chars as char[] = i.ToString().ToCharArray()
For Each c As Char In chars
sb.Append("<img src='/digits/");
sb.Append(c.ToString());
sb.Append(".gif' />");
Next
return sb.ToString()
End Function</code>Sv: Siffror till bilder med regexp
<code>
Private Sub cmdRegExp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRegExp.Click
Dim strR As String
strR = RegEx.Replace(txtNumber.Text, "(\d)", "<img src=""images/$1.gif"" />")
lblRegExp.Text = strR
End Sub
</code>
Om du vill ha din funktion så du kan anropa den från en annan funktion utan att behöva deklarera ett objekt ska den se ut som följer...
<code>
Public Class Funktioner
Public Shared Function Test(m As Match) As String
End Function
End Class
</code>
Mvh,
ThomasSv: Siffror till bilder med regexp
Mvh,
Thomas