Array-Funktion: Explode()

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Artemis

Betreff: Array-Funktion: Explode()

BeitragMo, Apr 24, 2006 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Array-Funktionen
Hier werde ich nützliche Array-Funktionen auflisten.

Bisherige Funktionen:
  • Explode:String[](Text:String, Separator:String, MaxLength:Int)
    • Die Funktion spaltet einen String in ein Array auf. Dabei wird der String immer an der Fundstelle des Strings Separator getrennt. Wenn nur eine bestimmte Anzahl Splits genommen werden sollen, kann man per MaxLength die Maximalanzahl der ArrayEinträge festgelegt werden. Der letzte Eintrag enthält dann immer den Rest des Strings.


Explode:String[](Text:String, Separator:String, MaxLength:Int) Version 1.1
Code: [AUSKLAPPEN]
Function Explode:String[](Text:String, Separator:String, MaxLength:Int=0)
   
   If Separator = "" Then Return Null
   If Text      = "" Then Return Null
   
   Local SeparatorCount:Int = 0
   Local TextPosition  :Int = 1
   Local LoopCounter   :Int
   Local Occurrence    :Int
   
   While Instr(Text, Separator, TextPosition)
      
      TextPosition   =  Instr(Text, Separator, TextPosition) + 1
      SeparatorCount :+ 1
      
   Wend
   
   If (MaxLength = 0) Or (MaxLength >= SeparatorCount) Then
      
      MaxLength = SeparatorCount
      
   EndIf
   
   Local Array:String[] = New String[MaxLength+1]
   
   If MaxLength <> SeparatorCount Then
      
      MaxLength :- 1
      
   EndIf
   
   For LoopCounter = 0 To MaxLength
      
      Occurrence = Instr(Text, Separator)
      
      If Occurrence > 0 Then
         
         Array[LoopCounter] = Left(Text, Occurrence-1)
         Text               = Mid(Text, Occurrence+Separator.Length)
         
      Else
         
         Array[LoopCounter] = Text
         Text               = ""
         
      EndIf
      
   Next
   
   If Text <> "" Then
      
      Array[LoopCounter] = Text
      
   EndIf
   
   Return Array
   
EndFunction
  • Zuletzt bearbeitet von Artemis am So, Apr 30, 2006 18:38, insgesamt 4-mal bearbeitet
 

Dreamora

BeitragMo, Apr 24, 2006 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Funktion heisst häufig auch Split.

Liese sich optimieren, indem du den Separated Array nur um *2 vergrösserst wenn er die aktuelle grösse überschreitet und dann am schluss auf die tatsächliche grösse reduzierst. Aktuell baut es relativ viel datenmüll auf weil jeder Slice den alten Array zu Garbage macht, sprich tunlichst vermieden werden sollten.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Artemis

BeitragDi, Apr 25, 2006 7:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, werde das so machen, dass ich am Anfang gucke, in wie viele Teile das Aufgespaltet werden soll, und dann erst den String splitte.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group