Domino 9 und frühere Versionen > Entwicklung

String zerlegen????

(1/2) > >>

dirk_2909:
@all

Hallo Leute!

Ich habe ein bearbeitbares Textfeld und Mehrfachwerte zugelassen.
Den Inhalt des Feldes schreibe ich in eine Variable (strInhalt).
Das Textfeld beinhaltet Kundennummern und zu jeder Kundennummer will ich jetzt die Kundennamen ermitteln.
Dazu muss ich aber jeden einzelnen Wert des Textfeldes ermitteln.
Wenn das Textfeld nur einen Wert hat, klappt alles super. Bei mehreren Werten klappt das natürlich nicht.

Wie kann ich den String in strInhalt mit LotusScript zerlegen(Seperator=";") oder
muss ich den Inhalt des Textfeldes in ein Array schreiben???? ???

Dirk

eknori:
Du kannst mit folgendem Code einen String in ein Array zerlegen

Function StringToArray( Byval stringList As String, delimiter As String ) As Variant
   
     ' Description:
     ' The StringToArray function converts a delimited string or list to an array.
   
     ' Declare the array
   Dim resultArray( )  As Variant
   
     ' Set initial count
   Dim elementCount As Integer
   elementCount = -1
   
     ' Build the array from the string
   While ( Instr( stringList, delimiter ) <> 0 )
      
      elementCount = elementCount + 1
      Redim Preserve resultArray( elementCount ) As Variant
      
      resultArray( elementCount ) = Trim$( Left$( stringList, Instr( stringList, delimiter ) - 1) )
      stringList = Right$( stringList, ( Len( stringList ) - Instr( stringList, delimiter) ) )
      
   Wend
   
     ' Get the remaining element from the list
   elementCount = elementCount + 1
   Redim Preserve resultArray( elementCount ) As Variant
   resultArray( elementCount ) = Trim$( stringList )
   
     ' Return the Array
   StringToArray = resultArray( )
   
End Function

eknori

eknori:
oder noch ein wenig kürzer mit

Function Split ( ImplodedStr$, StrDelimiter$) as variant
    Split = Evaluate(|@Explode("| & ImplodedStr & |";"| & StrDelimiter & |")|)
End function

dirk_2909:
@eknori
Besten Dank! :D

Werde es mal probieren!

manuel:
Hallo

darf ich mal dazwischenpfuschen. Du hast gesagt bei deinem Feld sind Mehrfachwerte zugelassen. Du könntest eigentlich gleich den Feldinhalt in einen Array schreiben.

Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim inhalt As Variant

Set uidoc = ws.CurrentDocument
inhalt = uidoc.Document.GetItemValue("FELD")


Mit uidoc.Document wird auf das Backend zugegriffen. Die Methode GetItemValue gibt nicht wie FieldGetText einen String zurück, sondern den wirklichen Wert eines Feldes. Wenn es also ein Textfeld mit Mehrfachwerten ist, wird ein Stringarray zurückgegeben.

Zugreifen kannst du dann zB so:

For i = LBound(inhalt) To UBound(inhalt)

...

 .... inhalt(i) ...
...

Next


Schönen Gruß
Manuel

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln