Avatar billede karsten_larsen Praktikant
27. februar 2007 - 22:26 Der er 16 kommentarer og
1 løsning

Bruge tal og bogstaver i en sub til at vælge en streng

Vil gerne at to parameter i en Sub vælger en bestemt streng.

Følgende script skulle give: "Demo A tekst 1" men giver txt_A_1 i stedet for.

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        demo("A", 1)
    End Sub

    Sub demo(ByVal tekst As String, ByVal tal As Integer)
        Dim txt_A_1 As String = "Demo A tekst 1"
        Dim txt_A_2 As String = "Demo A tekst 2"
        Dim txt_B_1 As String = "Demo B tekst 1"
        Dim txt_B_2 As String = "Demo B tekst 2"
        Dim OutPut As String = ""

        If tal = 1 Then
            OutPut = "txt_" & tekst & "_" & tal
        End If

        Label1.Text = OutPut.ToString
    End Sub

??:-) karsten_larsen
Avatar billede kalp Novice
27. februar 2007 - 22:36 #1
ved ikke om syntax er rigtig, men det kan du vel lige lave om:)
men du skal lave et tjek på alle dine strings.. f.eks på de 2 første sådan her

        If tekst = "A" && tal = 1 Then
        tekst = txt_A_1
        End

        If tekst = "A" && tal = 2 Then
        tekst = txt_A_2
        End

altså over

  If tal = 1 Then
            OutPut = "txt_" & tekst & "_" & tal
        End If
Avatar billede karsten_larsen Praktikant
27. februar 2007 - 22:41 #2
joee - men det optimale ville være, at sende to parameter afsted f.eks. "A" og 1, som så giver finder den rigtige streng til Label1

Label1.text =  "txt_" & tekst & "_" & tal
Avatar billede kalp Novice
27. februar 2007 - 22:47 #3
ja det  vil du jo også få.
men du bliver nød til at fortælle den hvilke kombinationer der hører til hvad.

den er snot dum for at sige det pænt.. det er dig der skal kode lidt intelligens ind i koden.
Avatar billede kalp Novice
27. februar 2007 - 22:48 #4
ellers må du gemme dem her

        Dim txt_A_1 As String = "Demo A tekst 1"
        Dim txt_A_2 As String = "Demo A tekst 2"
        Dim txt_B_1 As String = "Demo B tekst 1"
        Dim txt_B_2 As String = "Demo B tekst 2

i en Dictionary og lave en key af A og tallet efter

altså A1, A2, B1, B2

det er en god måde.
Avatar billede kalp Novice
27. februar 2007 - 22:54 #5
hvis du omskriver dette til VB

            Dictionary<string, string> tekstLinjer = new Dictionary<string, string>();
            tekstLinjer .Add("A1", "Demo A tekst 1");
            tekstLinjer .Add("A2", "Demo A tekst 2");
            tekstLinjer .Add("B1", "Demo B tekst 1");
            tekstLinjer .Add("B2", "Demo B tekst 2");

istedet for dette

        Dim txt_A_1 As String = "Demo A tekst 1"
        Dim txt_A_2 As String = "Demo A tekst 2"
        Dim txt_B_1 As String = "Demo B tekst 1"
        Dim txt_B_2 As String = "Demo B tekst 2"

så skal du blot skrive

    OutPut = "txt_" & tekst[tal.ToString+tekstLinjer] & "_" & tal
Avatar billede kalp Novice
27. februar 2007 - 22:55 #6
sorry.. den sidste skulle være

OutPut = "txt_" & tekstLinjer[tal.ToString+tekst] & "_" & tal
Avatar billede karsten_larsen Praktikant
27. februar 2007 - 22:59 #7
hmm - brugte i asp Eval("txt_"&bogstav1&bogstav2&"_4"), det er lidt samme fif jeg leder efter. Kender ikke til Dictionary men Select Case kan vel også gøre det, men det bliver hurtigt til mange linier kode.
Avatar billede kalp Novice
27. februar 2007 - 23:06 #8
Det fungere som et hashmap:)
men det smarte er at de 2 parametre bliver sat sammen til en unik nøgle som peger på den enkelte string værdi
Avatar billede karsten_larsen Praktikant
27. februar 2007 - 23:12 #9
okay - den køber jeg - tak for hjælpen
Avatar billede kalp Novice
27. februar 2007 - 23:14 #10
prøv at lege lidt med det:) når det virker kan du se mange andre steder hvor du kan bruge dictionary klassen:)
Avatar billede karsten_larsen Praktikant
27. februar 2007 - 23:18 #11
By the way er der en øvre grænse for antal linier

        Dim tekstLinjer As New StringDictionary()
        tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
Avatar billede kalp Novice
27. februar 2007 - 23:22 #12
altså hvor mange gange du kan kalde sådan en linje her?

tekstLinjer.Add("A1", "Demo A tekst 1")

??

tror bare det kræver du har ram nok, men du får næppe brugt det op så bare lav løs:o)
Avatar billede karsten_larsen Praktikant
27. februar 2007 - 23:26 #13
næhe - hvor mange tekst linier i et StringDictionary

        Dim tekstLinjer As New StringDictionary()
        tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
        tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
        tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
        etc.
Avatar billede karsten_larsen Praktikant
27. februar 2007 - 23:26 #14
men du har ret det er ganske smart
Avatar billede kalp Novice
27. februar 2007 - 23:28 #15
Jeg kender ikke til nogen umiddelbar grænse desværre, men hvis du kender den for "string" så vil den være det samme her.

og jeg har gemte kæmpe datamængder i en string så tror ikke det blive et problem:)

men det her kan du kalde et utal af gange..

  tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
        tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
        tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
  tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
        tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
        tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
  tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
        tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
        tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
  tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
        tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
        tekstLinjer.Add("A1", "Demo A tekst 1")
        tekstLinjer.Add("A2", "Demo A tekst 2")
        tekstLinjer.Add("B1", "Demo B tekst 1")
        tekstLinjer.Add("B2", "Demo B tekst 2")
Avatar billede karsten_larsen Praktikant
27. februar 2007 - 23:30 #16
okay - mange tak for hjælpen
Avatar billede kalp Novice
27. februar 2007 - 23:35 #17
ingen årsage:)
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