Gå til innhold

InStr med mange occurences av søkestrengen


Anbefalte innlegg

Skrevet

Si at jeg gjør slik:

 

Textbox1.text = InStr("ABC-ABC-ABC-ABC", "B")

 

Hvordan kan jeg returnere hver startposition av "B" ?

Sånn som den er nå, blir returen 2, altså startpositionen av den første "B"en

 

 

Any ideas? :p

Videoannonse
Annonse
Skrevet (endret)
Dim s As String = "ABC-ABC-ABC-ABC"
Dim indices As List(Of Integer) = new List(Of Integer)
Dim index As Integer

Do
 index = s.IndexOf("B", index + 1)
 If index = -1 Then Exit Do
 indices.Add(index)
Loop

Endret av GeirGrusom
Skrevet
Ehm... InStr? Er det noen som har grodd fast i VB6 eller noe her? *grøss*

8084275[/snapback]

 

Nei, desverre er InStr en del av Microsoft.VisualBasic namespacet som er lagt til som referanse automatisk i nye VB.Net prosjekter...

Skrevet
Har aldri brukt VB6, VB.NET er det eneste språket jeg har prøvd :p (untatt html og lignendes)

8091271[/snapback]

 

Høyreklikk på prosjektet. Velg references. Fjern Microsoft.VisualBasic.*.

 

Og lær deg å bruke .Net måten å gjøre ting på isteden.

 

string.IndexOf(...) :)

Skrevet
...men disse er kun lagt til for å gjøre overgangen fra VB6 til VB.NET enklere.

8090884[/snapback]

Ja, fysj... tenke seg til å måtte lære noe nytt og lete etter funksjoner. Da er det MYE bedre å dra med seg iltt gammelt graps :) Sånn for kosens skyld...

Skrevet

Synes det er litt mer logisk at alle string operasjoner faktisk ligger i string klassen, framfor prosedyre basert som i VB6, litt enklere å finne de funskjonene du er ute etter.

Skrevet
...men disse er kun lagt til for å gjøre overgangen fra VB6 til VB.NET enklere.

8090884[/snapback]

Ja, fysj... tenke seg til å måtte lære noe nytt og lete etter funksjoner. Da er det MYE bedre å dra med seg iltt gammelt graps :) Sånn for kosens skyld...

8093272[/snapback]

For oss som oppgraderer prosjekter for VB6 til .NET er det genialt for da slipper man å måtte om-programmere hvert eneste fordømte prosjekt fordi .NET mangler ett eller annet graps. ;)

 

På den annen side kan det hindre noen i å bruke .NET-ekvivalenten ettersom VB6 fremdeles fungerer. Eksempelvis burde .NET-oversetteren være smart nok med til å erstatte vbCrLv med ControlChars.NewLine eller tilsvarende...

 

 

Det er alltid fornuftig å lære seg "den nye" måten å gjøre noe på. :)

Skrevet (endret)

Huff da!

Yeye, men siden InStr fungerer, så bruker jeg den :p

8114369[/snapback]

 

Det er alltid fornuftig å lære seg "den nye" måten å gjøre noe på. :)

 

 

 

Hva gjør du i Visual Studio 2008? Kanskje de har fjernet den i .NET 4.0... ;)

Endret av moskus
Skrevet
For oss som oppgraderer prosjekter for VB6 til .NET er det genialt for da slipper man å måtte om-programmere hvert eneste fordømte prosjekt fordi .NET mangler ett eller annet graps. ;)

8113358[/snapback]

 

Mangler? Ja, man kan sikkert se sånn på det også. Det blir nesten like smart som å si at C# mangler keywordet "Dim" og slikt.

 

Huff da!
Yeye, men siden InStr fungerer, så bruker jeg den :p

8114369[/snapback]

 

Det er alltid fornuftig å lære seg "den nye" måten å gjøre noe på. :)

 

Hva gjør du i Visual Studio 2008? Kanskje de har fjernet den i .NET 4.0... ;)

8114624[/snapback]

 

Viktig poeng. Det er viktigere å lære seg hvordan det egentlig skal være. Det fungerer å kalle funksjoner for å tegne vinduer fra win32-api'en også, men for 99.9999% av alle prosjeter vil dette være rent tull.

Skrevet
Mangler? Ja, man kan sikkert se sånn på det også. Det blir nesten like smart som å si at C# mangler keywordet "Dim" og slikt.

8115023[/snapback]

 

Ja, endelig begynner du å forstå! :)

 

Det tok litt tid, men den som venter på noe godt... :D

Skrevet

Jeg synes de burde ta tilbake SET og LET, pluss linjenummerering!

Og hvor ble det forresten av GOSUB?

Return er jo til noe helt annet i Visual Basic.NET en det det var til i gode gamle Turbo Basic.

 

Nei du, dette nymotens tullet.

Gi meg Visual Basic 1.0 eller gi meg en iskrem.

Skrevet (endret)

Jeg tøyser.

 

Dessuten var det ikke det linjenummerering var til.

Til å begynne med, var det en simpel måte å kalle jump, eller populært goto.

 

10: PRINT "Hello World!"

20: GOTO 10

 

 

10: SIN

20: GOTO HELL

(Futurama)

 

Basic har vært fullt av sludder:

- LET (dette tror jeg er gjort for å få BASIC til å ligne mer på Fortran)

LET A = 20

- SET (Hva var poenget med dette? Du måtte bruke set hvis du brukte objekter)

- Postfix datatype deklarering, %&$

- Linjenummerering

- CALL

- Hele Open saken: OPEN [FILENAME] FOR [MODE] ACCESS [ACCESS] AS #[NUMBER]

- Arrays deklareres med (), samme som funksjonsparameter ()

- Arrays kan begynne med negative størrelser:

Dim arr(-4 to 12) As String

- Option Explicit er av som default (like irriterende som i Python når det kommer til debugging)

 

Hva i helvete tenkte de når de laget dette?

Heldigvis har de rettet på det meste, bortsett fra Microsoft.VisualBasic namespacet.

Endret av GeirGrusom
Skrevet
- Arrays kan begynne med negative størrelser:

Dim arr(-4 to 12) As String

8116041[/snapback]

 

Man kan ikke ha et array med 0 elementer.

Dim test as Integer(0)

Så vil test ha 1 stk element... :-P

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...