Hej, Förstod inte riktigt vad som var problemet? Nja, innehållet(värdet) i textboxen. Du får ju då iterera igenom arrayen som produceras av "Split", och kolla om värdet finns. Jag har försökt iterera på alla möjliga sätt, men det står still i mitt huvud. Det blir något fel i vilken ordning jag kollar. Det är lite svårt att beskriva exakt vad som blir fel eftersom jag har provat så varianter... Det här kanske kan vara något Hej! Bra att det löste sig,Sträng till array-problem
Nu ger jag upp. Jag har hållt hela dagen med en skitsak, som jag bara inte får att fungera.
Kan någon hjälpa mig....?
Jag har en tabell där man klicka på olika celler. När man klickar på en cell sparar jag dess objektid i en textbox. Varje objektid separerar jag med ett mellanslag.
Så efter ett par klick kan det se ut så här i textboxen:
"12 453 43 234 898 76"
Tanken är att jag ska markera(grafiskt) dessa på något sätt i tabellen genom att kolla objektid:n i textboxen, men det hör egentligen inte hit...
Klickar man sen en gång till i samma cell som innan, te x "453"-cellen, skall detta id tas bort från textboxen.
Då ska det ut så här:
"12 43 234 898 76" (andra posten är borta)
Så summan av kardemumman blir:
Ett klick på en cell, lägg till objektid:t i textboxen.
Finns redan id:t i textboxen, lägg inte till det PLUS ta bort det(samma id alltså) som redan fanns.
Finns inte id:t lägger jag helt enkelt till det oxå.
Jag ska alltså markera vid klick och avmarkera om man klickar en gång till. Men löser jag själv om jag bara får till den s-tans textboxen...
Förstår ni vad jag är ute efter?
Tackar på förhand!!
Jag kör VB.NET förresten.
/JockeSv: Sträng till array-problem
Har du problem med textboxen?Sv:Sträng till array-problem
Innehållet blir ju en array, om jag gör Split på mellanslag, tex om innhållet är:
"12 34 65 39 76"
Så blir ju arrayen:
12
34
65
39
76
Om jag klickar på en cell vill jag titta om dess objektid(t ex "65") redan finns textboxen/arrayen.
Finns den redan i textboxen, skall jag INTE lägga till en ny "65", utan ta bort den befintliga "65".
Men finns den inte ska jag lägga till "65".
Att skriva till textboxen är inga problem, utan att kontrollera vad som finns, och ev. plocka bort värden.
Är du med?
/JockeSv: Sträng till array-problem
Kör du JavaScript eller VB.Net för att hantera detta?Sv:Sträng till array-problem
Du får gärna visa ett exempel om du har tid o lust.
Jag kör VB.Net för detta.
/JockeSv: Sträng till array-problem
<code>
Public Sub testArray()
Dim strTest As String = "12 453 43 234 898 76"
Dim id As String = "453"
System.Diagnostics.Debug.WriteLine(strTest)
strTest = MyToggleFunction(id, strTest)
System.Diagnostics.Debug.WriteLine(strTest)
strTest = MyToggleFunction(id, strTest)
System.Diagnostics.Debug.WriteLine(strTest)
End Sub
Private Function MyToggleFunction(ByVal strToSearchFor As String, ByVal stringToBeSearchIn As String) As String
Dim x As New Collections.ArrayList
x.AddRange(stringToBeSearchIn.Split(" "))
x.Sort()
Dim idx As Integer = x.BinarySearch(strToSearchFor)
If idx >= 0 Then
x.RemoveAt(idx)
Else
x.Insert(Not idx, strToSearchFor)
End If
Return String.Join(" ", x.ToArray(GetType(String)))
End Function
</code>Sv:Sträng till array-problem
Tack för hjälpen.
Jag löste det så här till slut.
Det hela var ju väldigt enkelt och nästan pinsamt.....
Dim sRackId As String = txtTest.Text.Trim
Dim TempArr() As String = txtResult.Text.Trim.Split(" ")
Dim useArray As ArrayList = New ArrayList(TempArr)
If useArray.Contains(sRackId) Then
useArray.Remove(sRackId)
Else
useArray.Add(sRackId)
End If
txtResult.Text = ""
For i As Integer = 0 To useArray.Count - 1
txtResult.Text = txtResult.Text & useArray(i) & " "
Next
Problemet med min kod var helt enkelt att jag glömde tömma txtResult innan jag loopade igenom arraylisten.
Så där satt man en hel dag för sån skitsak....:)
/Jocke
Sv: Sträng till array-problem
om du vill kan du byta ut din kod,
<code>
txtResult.Text = ""
For i As Integer = 0 To useArray.Count - 1
txtResult.Text = txtResult.Text & useArray(i) & " "
Next
</code>
mot
<code>
txtResult.Text = String.Join(" ", useArray.ToArray(GetType(String)))
</code>