Avatar billede tiger_webdesign Nybegynder
04. marts 2003 - 14:16 Der er 25 kommentarer og
2 løsninger

Splitte streng op før stort bogstav

Hvordan splitter man en streng op før hvert stort bogstav??

Fx
SssAAaaaAA
bliver til
Sss
A
Aaaa
A
A
Avatar billede martin_moth Mester
04. marts 2003 - 14:26 #1
Tvivler på at du kan bruge Spilt()-funktionen til det.

Du kan jo loopen for i = 2 to Len(MyString), læse karakterene een for een, og er det et stort bogstav napper du delstrengen og smider ind i et array.

Er du med på hvad jeg mener - eller skal du have kode?
Avatar billede mikker Nybegynder
04. marts 2003 - 14:27 #2
Bruge instr?
Avatar billede martin_moth Mester
04. marts 2003 - 14:38 #3
2 sek - så har jeg lidt kode
Avatar billede martin_moth Mester
04. marts 2003 - 14:39 #4
PS: Du mangler at skrive hvad der skal ske, hvis linien ikke starter med et stort bogstav?
Avatar billede tiger_webdesign Nybegynder
04. marts 2003 - 14:40 #5
det første bogstav skal altid opfattes som stort
Avatar billede martin_moth Mester
04. marts 2003 - 14:52 #6
3 sek...
Avatar billede mikker Nybegynder
04. marts 2003 - 15:00 #7
Her er en måde at gøre det på...

Private Sub Command1_Click()
strstreng = "DetteErEnTestStrengG"
a = 0
For i = 1 To Len(strstreng)
Select Case Mid(strstreng, i, 1)
Case "A" To "Z", "Æ", "Ø", "Å"
    If a = 1 Then
    List1.AddItem tek$
    tek$ = ""
    a = 0
    End If
    If a = 0 Then
    a = a + 1
    tek$ = Mid(strstreng, i, 1)
    End If
Case Else
tek$ = tek$ & Mid(strstreng, i, 1)
End Select
Next i
List1.AddItem tek$
End Sub

- Mikker :O)
Avatar billede martin_moth Mester
04. marts 2003 - 15:03 #8
Og her er min:

Dim MyString As String
Dim MyStringArray() As String
Dim i As Integer
Dim j As Integer
Dim CharCode As Byte
Dim ArraySize As Byte

MyString = Text1.Text
If Len(MyString) > 2 Then
  j = 1
  For i = 2 To Len(MyString)
    CharCode = Asc(Mid(MyString, i, 1))
    If CharCode > 64 And CharCode < 91 Then
      ArraySize = ArraySize + 1
      ReDim Preserve MyStringArray(ArraySize)
      MyStringArray(ArraySize - 1) = Mid(MyString, j, i - j)
      j = i
    End If
  Next i
End If

If j < Len(MyString) Then
  ArraySize = ArraySize + 1
  ReDim Preserve MyStringArray(ArraySize)
  MyStringArray(ArraySize - 1) = Mid(MyString, j, Len(MyString) - j + 1)
End If

Den vil splitte fx

abbbBcccCdddDEe op i

abbb
Bccc
Cddd
D
Ee
Avatar billede mikker Nybegynder
04. marts 2003 - 15:04 #9
Hvor er din æ,ø og å henne ? :O) (asc 197,198 og216 tror jeg)
- Mikker
Avatar billede martin_moth Mester
04. marts 2003 - 15:08 #10
PS: min løsning tager ikke højde for ÆØÅ (forglemmelse), og mikkers tager ikke højde for at første bogstav altid skal opfattes som stort, selvom det er lille.

Begge dele kan du jo så rette,og bruge den løsning du bryder dig bedst om (jeg synes vi begge har fortjent points ;o)
Avatar billede tiger_webdesign Nybegynder
04. marts 2003 - 15:10 #11
så har jeg dobblet op til jer begge...


Tak for hjælpen ;-)
Avatar billede tiger_webdesign Nybegynder
04. marts 2003 - 15:12 #12
Er I interesset i 10 point mere?
Avatar billede mikker Nybegynder
04. marts 2003 - 15:16 #13
Takker for point.
Har du flere spørgsmål?
Avatar billede tiger_webdesign Nybegynder
04. marts 2003 - 15:18 #14
Avatar billede martin_moth Mester
04. marts 2003 - 15:18 #15
Alt er fint for mig - prøv at gennemskue den løsning du vælger, så du er helt 100 med på hvad der sker :o)
Avatar billede tiger_webdesign Nybegynder
04. marts 2003 - 15:20 #16
skal jeg nok... ;-)
Avatar billede martin_moth Mester
04. marts 2003 - 15:29 #17
PS: Fin stil, at forhøje fordi du mener at indsatsen måske var mere end de 10 værd - ros for det :o)
Avatar billede tiger_webdesign Nybegynder
04. marts 2003 - 15:36 #18
jeg prøver at behandle folk som jeg selv vil have andre til at behandle mig...

og det var ikke noget jeg selv vil kunne have fundet ud af såååå... hvorfor ikke...
Avatar billede tiger_webdesign Nybegynder
04. marts 2003 - 15:58 #19
martin_moth -->> der er lidt problemmer med din kode... hvis jeg skriver HHO retunerer den kun H og H men ikke O... Please help... jeg er ikke specielt god til VB...
Avatar billede martin_moth Mester
04. marts 2003 - 16:18 #20
Den skal da heller ikke returnere andet end H, H og o - du har selv bedt om at få splittet ved de store bogstaver
Avatar billede tiger_webdesign Nybegynder
04. marts 2003 - 16:20 #21
har fundet en løsning...
Avatar billede mikker Nybegynder
04. marts 2003 - 16:34 #22
Bær lige over med mig engang...
Jeg er ikke den store kemiker, faktisk ville det være synd at sige at jeg overhovedet kan huske noget fra dengang...
Men ville følgende ikke være nemmere...

Private Sub Command1_Click()
Dim mystringarray() As String
Dim strstreng As String
Dim a As Integer
Dim tek As String

strstreng = "H2SO4He5"
a = 0
For i = 1 To Len(strstreng)
Select Case Mid(strstreng, i, 1)
Case "A" To "Z", "Æ", "Ø", "Å"
    If a = 1 Then
      ArraySize = ArraySize + 1
      ReDim Preserve mystringarray(ArraySize)
      mystringarray(ArraySize - 1) = tek$
    tek$ = ""
    a = 0
    End If
    If a = 0 Then
    a = a + 1
    tek$ = Mid(strstreng, i, 1)
    End If
Case Else
tek$ = tek$ & Mid(strstreng, i, 1)
End Select
Next i
ArraySize = ArraySize + 1
      ReDim Preserve mystringarray(ArraySize)
      mystringarray(ArraySize - 1) = tek$
    tek$ = ""
For i = LBound(mystringarray) To UBound(mystringarray)
List1.AddItem mystringarray(i)
Next i
End Sub

Altså bare skrive H2O istedet for HHO ?
Avatar billede martin_moth Mester
04. marts 2003 - 16:46 #23
mikker: Selvom du ikke er kemiker, hvor mange grundstoffer (du ved, dem fra det der periodiske system som bruges verden over), tror du anvender bogstaverne Æ, Ø og Å

Sorry, kunne ikke lade være :o)
Avatar billede mikker Nybegynder
04. marts 2003 - 17:00 #24
Der er da både Helium og oxygen som de fleste kender men hvad med Ølimave og Åligele ?
Avatar billede martin_moth Mester
04. marts 2003 - 17:05 #25
he he he :o)

Eller grundstoffet Pø (Pløre) (vistnok grundstof nr. 113) og Æm (Æblemos)
Avatar billede mikker Nybegynder
04. marts 2003 - 17:34 #26
Så har jeg endnu engang præsteret at blande mig i ting jeg burde holde mig fra :O)

Private Sub Command1_Click()
Dim mystringarray() As String
Dim strstreng As String
Dim a As Integer
Dim tek As String
Dim strval As String
Dim mH, mO, mS, mHe As Integer
mH = 1 ' lad os sige at molarmassen for H er 1 bare for sjov
mO = 2
mS = 3
mHe = 4

'strstreng = "H2SO4He12"
strstreng = "H2SO4He2" ' 2*1 + 1*3 + 4*2 + 2*4 = 2+3+8+8 = 21
'strstreng = "HHO"
a = 0
For i = 1 To Len(strstreng)
Select Case Mid(strstreng, i, 1)
Case "A" To "Z", "Æ", "Ø", "Å"
    If a = 1 Then
      ArraySize = ArraySize + 1
      ReDim Preserve mystringarray(ArraySize)
      mystringarray(ArraySize - 1) = tek$
    tek$ = ""
    a = 0
    End If
    If a = 0 Then
    a = a + 1
    tek$ = Mid(strstreng, i, 1)
    End If
Case Else
tek$ = tek$ & Mid(strstreng, i, 1)
End Select
Next i
ArraySize = ArraySize + 1
      ReDim Preserve mystringarray(ArraySize)
      mystringarray(ArraySize - 1) = tek$
    tek$ = ""
For i = LBound(mystringarray) To UBound(mystringarray)

sogstreng = mystringarray(i)
  For pos = 1 To Len(sogstreng)
    Select Case Mid(sogstreng, pos, 1)
    Case 0 To 9
        strval = strval & Mid(sogstreng, pos, 1)
    Case Else
        molstreng = molstreng & Mid(sogstreng, pos, 1)
    End Select
  Next pos
  gang = 0 + Val(strval)
  If gang = 0 Then gang = 1
Select Case molstreng
Case "H"
Text1 = (Val(Text1) + (gang * mH))
DoEvents
Case "S"
Text1 = (Val(Text1) + (gang * mS))
DoEvents
Case "O"
Text1 = (Val(Text1) + (gang * mO))
DoEvents
Case "He"
Text1 = (Val(Text1) + (gang * mHe))
DoEvents
Case Else
End Select
strval = ""
molstreng = ""
Next i
End Sub

Private Sub Form_Load()
Text1 = ""
End Sub


- Mikker
Avatar billede mikker Nybegynder
04. marts 2003 - 17:44 #27
Med to textboxe: text1 og txtsog samt 1 command: command1
Ja så kan man jo næsten lave et helt lille kemiker program ud af det.
Hvad med små knapper -> en for hvert grundstof. Så kan man blot trykke på knappen og finde ud af om dette grundstof kan sættes på det 'molekyle' ? man er ved at lave? Altså ligesom at der kan er plads til 2*H og 1* O i H2O..

Nu plaprer jeg vist, men er det ikke iorden med 39 i feber?
Vis lidt medlidenhed med en syg mand :O)

Private Sub Command1_Click()
Dim mystringarray() As String
Dim strstreng As String
Dim a As Integer
Dim tek As String
Dim strval As String
Dim mH, mO, mS, mHe As Integer
mH = 1 ' lad os sige at molarmassen for H er 1 bare for sjov
mO = 2
mS = 3
mHe = 4
strstreng = Text2
'strstreng = "H2SO4He12"
'strstreng = "H2SO4He2" ' 2*1 + 1*3 + 4*2 + 2*4 = 2+3+8+8 = 21
'strstreng = "HHO"
a = 0
For i = 1 To Len(strstreng)
Select Case Mid(strstreng, i, 1)
Case "A" To "Z", "Æ", "Ø", "Å"
    If a = 1 Then
      ArraySize = ArraySize + 1
      ReDim Preserve mystringarray(ArraySize)
      mystringarray(ArraySize - 1) = tek$
    tek$ = ""
    a = 0
    End If
    If a = 0 Then
    a = a + 1
    tek$ = Mid(strstreng, i, 1)
    End If
Case Else
tek$ = tek$ & Mid(strstreng, i, 1)
End Select
Next i
ArraySize = ArraySize + 1
      ReDim Preserve mystringarray(ArraySize)
      mystringarray(ArraySize - 1) = tek$
    tek$ = ""
For i = LBound(mystringarray) To UBound(mystringarray)

sogstreng = mystringarray(i)
  For pos = 1 To Len(sogstreng)
    Select Case Mid(sogstreng, pos, 1)
    Case 0 To 9
        strval = strval & Mid(sogstreng, pos, 1)
    Case Else
        molstreng = molstreng & Mid(sogstreng, pos, 1)
    End Select
  Next pos
  gang = 0 + Val(strval)
  If gang = 0 Then gang = 1
Select Case molstreng
Case "H"
Text1 = (Val(Text1) + (gang * mH))
DoEvents
Case "S"
Text1 = (Val(Text1) + (gang * mS))
DoEvents
Case "O"
Text1 = (Val(Text1) + (gang * mO))
DoEvents
Case "He"
Text1 = (Val(Text1) + (gang * mHe))
DoEvents
Case Else
End Select
strval = ""
molstreng = ""
Next i
End Sub

Private Sub Form_Load()
txtsog = ""
Text1 = ""
Text1.Enabled = False
txtsog.TabIndex = 0
Command1.TabIndex = 1
End Sub

Nå jeg må tilbage til min seng...

- Mikker
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
Kurser inden for grundlæggende programmering

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