IndexOf: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(14 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
===Zugehörige Evaluatoren===
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
Die Funktion ''indexOf'' bestimmt die Position, an der eine Zeichenkette oder ein einzelnes Zeichen innerhalb einer anderen Zeichenkette das erste Mal vorkommt. Außerdem muss angegeben werden, ab welcher Stelle gesucht werden soll. Die Funktion erwartet zwei Strings, die zu durchsuchende und die zu suchende Zeichenkette, und eine Ganzzahl, ab welcher Stelle die Suche beginnen soll. Es wird eine Ganzzahl zurückgegeben.
Die Funktion ''indexOf'' bestimmt die Position, an der eine Zeichenkette oder ein einzelnes Zeichen innerhalb einer anderen Zeichenkette das erste Mal vorkommt. Außerdem muss angegeben werden, ab welcher Stelle gesucht werden soll. Die Funktion erwartet zwei Strings, die zu durchsuchende und die zu suchende Zeichenkette, und eine Ganzzahl, ab welcher Stelle die Suche beginnen soll. Alternativ kann der dritte Parameter ausgelassen werden, dies entspricht der 0. Es wird eine Ganzzahl zurückgegeben.


=== Syntax ===
=== Syntax ===
  indexOf(String zeichenkette, String muster, int position)
  indexOf([[Zeichenkette]] zeichenkette, [[Zeichenkette]] muster, [ [[Ganzzahl]] position ])


=== Parameter ===
=== Parameter ===
* '''zeichenkette''' - Zeichenkette in dem gesucht wird
* '''zeichenkette''' - Zeichenkette in dem gesucht wird
* '''muster''' - Zeichenkette, die innnerhalb der ersten gesucht wird
* '''muster''' - Zeichenkette, die innnerhalb der ersten gesucht wird
* '''position''' - Startpositition der Suche
* '''position''' - Startpositition der Suche - '''optional''' (default = 0)


=== Return Value ===
=== Return Value ===
* Gibt eine Ganzzahl zurück
* Gibt eine [[Ganzzahl]] zurück


=== Beispiele ===
=== Beispiele ===
==== Standardfälle ====
==== Standardfälle ====
  indexOf('Hello World!','o',0)  --> returns 4
  indexOf('Hello World!','o',0)  --> returns 4
indexOf('Hello World!','o')  --> returns 4
  indexOf('Hello World!','o',6)  --> returns 7
  indexOf('Hello World!','o',6)  --> returns 7


==== Benutzung von Variablen ====
==== Benutzung mit Variablen ====
  indexOf('[pos=1]','x',0)
  '''Jack2:'''
indexOf('text','[var=a]',0)
  indexOf('text', '[var=a]')
  indexOf('[var=b]','x',[pos=2])
 
====JUnit Tests====
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed">
@Before
public void beforeTest() {
  placeFillInVariable(1, OMParser.parse("str"));
  placeFillInVariable(2, OMParser.parse("anotherstring"));
  placeFillInVariable(3, OMParser.parse("2"));
  placeExerciseVariable("a", OMParser.parse("str"));
  placeExerciseVariable("b", OMParser.parse("anotherstring"));
  placeExerciseVariable("c", OMParser.parse("2"));
}
@Test
public void testIndexOf(){
  assertTrue(3 == getEvaluator().getNumberResult("indexOf('abcdef','def', 0)"));
  assertTrue(4 == getEvaluator().getNumberResult("indexOf('abc def','def', 2)"));
  assertTrue(4 == getEvaluator().getNumberResult("indexOf('abc_def','def', 3)"));
  assertTrue(4 == getEvaluator().getNumberResult("indexOf('2 c 4e6','4e6', 1)"));
  assertTrue(-1 == getEvaluator().getNumberResult("indexOf('2c4e 6','4e6', -1)"));
}
 
@Test
public void testIndexOfWithInput(){
  assertTrue(7 == getEvaluator().getNumberResult("indexOf('[pos=2]','str', 3)"));
  assertTrue(7 == getEvaluator().getNumberResult("indexOf('[pos=2]','[pos=1]', 2)"));
  assertTrue(7 == getEvaluator().getNumberResult("indexOf('[pos=2]','[pos=1]', [pos=3])"));
}
@Test
public void testIndexOfWithVariables(){
  assertTrue(7 == getEvaluator().getNumberResult("indexOf('[var=b]','str', 3)"));
  assertTrue(7 == getEvaluator().getNumberResult("indexOf('[var=b]','[var=a]', 2)"));
  assertTrue(7 == getEvaluator().getNumberResult("indexOf('[var=b]','[var=a]', [var=c])"));
}
 
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testIndexOfWithWrongInputPointNumber(){
  getEvaluator().getNumberResult("indexOf('abcd5', 5.1, 1)");
}
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testIndexOfWithWrongInputCharacter(){
  getEvaluator().getNumberResult("indexOf('abcd5', a, 1)");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testIndexOfWithTwoRationalAndOneTextArguments(){
  getEvaluator().getNumberResult("indexOf('abcd5', 5, 1)");
}
 
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testIndexOfWithThreeRationalArguments(){
  getEvaluator().getNumberResult("indexOf(5, 5, 0)");
}


@Test(expected=UnsupportedEvaluatorFunctionException.class)
'''Jack3:'''
public void testIndexOfWithThreeTextArguments(){
indexOf('text', [var=a])
  getEvaluator().getNumberResult("indexOf('str', 'str', '0')");
}


@Test(expected=UnsupportedEvaluatorFunctionException.class)
==== Benutzung mit studentischen Eingaben ====
public void testIndexOfWithOneArgument(){
'''Jack2:'''
getEvaluator().getNumberResult("indexOf(1)");
indexOf('[pos=1]', 'x', 0)
}


@Test(expected=UnsupportedEvaluatorFunctionException.class)
'''Jack3:'''
public void testIndexOfWithTwoArguments(){
indexOf([input=field1], 'x', 0)
  getEvaluator().getNumberResult("indexOf('string', 1)");
}
@Test(expected=UndefinedExerciseVariableException.class)
public void testIndexOfWithMissingExerciseVariable(){
  getEvaluator().getNumberResult("indexOf('[var=j]', 'str', 2)");
}
@Test(expected=UndefinedFillInVariableException.class)
public void testIndexOfWithMissingInput(){
  getEvaluator().getNumberResult("indexOf('[pos=42]', 'str', 2)");
}
</syntaxhighlight>


=== Hinweise ===
=== Hinweise ===
Zeile 109: Zeile 42:
* Sollte die gesuchte Zeichenkette nicht gefunden werden, gibt die Funktion -1 zurück.
* Sollte die gesuchte Zeichenkette nicht gefunden werden, gibt die Funktion -1 zurück.


[[Kategorie:Evaluatorfunktion]]
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:Zeichenkettenfunktionen]][[Kategorie:JACK2]][[Kategorie:JACK3]]

Aktuelle Version vom 17. April 2024, 07:59 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion indexOf bestimmt die Position, an der eine Zeichenkette oder ein einzelnes Zeichen innerhalb einer anderen Zeichenkette das erste Mal vorkommt. Außerdem muss angegeben werden, ab welcher Stelle gesucht werden soll. Die Funktion erwartet zwei Strings, die zu durchsuchende und die zu suchende Zeichenkette, und eine Ganzzahl, ab welcher Stelle die Suche beginnen soll. Alternativ kann der dritte Parameter ausgelassen werden, dies entspricht der 0. Es wird eine Ganzzahl zurückgegeben.

Syntax

indexOf(Zeichenkette zeichenkette, Zeichenkette muster, [ Ganzzahl position ])

Parameter

  • zeichenkette - Zeichenkette in dem gesucht wird
  • muster - Zeichenkette, die innnerhalb der ersten gesucht wird
  • position - Startpositition der Suche - optional (default = 0)

Return Value

Beispiele

Standardfälle

indexOf('Hello World!','o',0)   --> returns 4

indexOf('Hello World!','o')   --> returns 4

indexOf('Hello World!','o',6)   --> returns 7

Benutzung mit Variablen

Jack2:
indexOf('text', '[var=a]')
Jack3:
indexOf('text', [var=a])

Benutzung mit studentischen Eingaben

Jack2:
indexOf('[pos=1]', 'x', 0)
Jack3:
indexOf([input=field1], 'x', 0)

Hinweise

  • Die Nummerierung innerhalb der Zeichenkette beginnt mit 0.
  • Sollte die gesuchte Zeichenkette nicht gefunden werden, gibt die Funktion -1 zurück.