Scanner
Übersicht
BlitzMax, BlitzMax NG
Codearchiv & Module
|
Betreff: Scanner
|
Di, Jul 23, 2013 15:28
Antworten mit Zitat
|
Die Scanner-Klasse ist ein Teil der Java-Standardbibliothek, der verwendet wird, um Strings zu verarbeiten. Konkret erlaubt sie es, einen oder mehrere Delimiter zu definieren, anhand der der Text zerlegt wird.
BlitzMax: [AUSKLAPPEN] [EINKLAPPEN]
SuperStrict Framework BRL.StandardIO Import BRL.Retro
Type TScanner Field text:String Field delimiter:String[] Field lastpos:Int Field nextexists:Int Function Create:TScanner(text:String, delimiter:String[]=Null) Local scanner:TScanner = New TScanner If delimiter=Null Then delimiter = [" "] scanner.text = text scanner.delimiter = delimiter scanner.lastpos = 0 scanner.nextexists = False For Local i:Int=0 To scanner.delimiter.length-1 If (Instr(scanner.text,scanner.delimiter[i],scanner.lastpos)) Then scanner.nextexists = True Next Return scanner End Function Method hasNext:Int() Return nextexists End Method Method getNext:String() If (nextexists) Then Local nextpos:Int=2147483647 For Local i:Int=0 To delimiter.length-1 Local in:Int = Instr(text,delimiter[i],lastpos+1) If (in>0 And in<nextpos) Then nextpos=in Next If nextpos=2147483647 Then nextexists=False Return Right(text,Len(text)-lastpos) Else nextexists=True Local out:String = Mid(text,lastpos+1,nextpos-lastpos-1) lastpos = nextpos Return out EndIf Else Return Null EndIf End Method Method getNextInt:Int() Return Int(getNext()) End Method Method getNextFloat:Float() Return Float(getNext()) End Method Method getNextShort:Short() Return Short(getNext()) End Method Method getNextByte:Byte() Return Byte(getNext()) End Method Method getNextLong:Long() Return Long(getNext()) End Method Method getNextDouble:Double() Return Double(getNext()) End Method Method setDelimiter(delimiter:String[]) Self.delimiter = delimiter End Method End Type
Local scanner:TScanner = TScanner.Create("1 21314.14 1221 1342") While scanner.hasNext() Print scanner.getNextFloat() Wend
scanner:TScanner = TScanner.Create("Das ist ein Test") While scanner.hasNext() Print scanner.getNext() Wend
scanner:TScanner = TScanner.Create("Das/ist/ein/zweiter?Test?oder?",["/","?"]) While scanner.hasNext() Print scanner.getNext() Wend
Verwendung:
Erstellen des Scanners mit TScanner.Create(text, delimiter)
Der Delimiter ist standardmäßig auf " " gestellt, also Leerzeichen. Delimiter müssen als String-Array eingegeben werden.
hasNext() gibt aus, ob es noch weitere Tags gibt.
getNext() gibt den nächsten Tag als String aus.
getNext<Variablentyp>() gibt den nächsten Tag als Wert im gewählten Variablentypen aus.
Die getNext()-Funktion gibt null zurück, wenn nichts mehr da ist.
|
Gewinner der 6. und der 68. BlitzCodeCompo
|
Übersicht
BlitzMax, BlitzMax NG
Codearchiv & Module
Powered by phpBB © 2001 - 2006, phpBB Group