IndexOf

Aus JACK Wiki
Zur Navigation springen Zur Suche springen

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.

Syntax

indexOf(String zeichenkette, String muster, int position)

Parameter

  • zeichenkette - Zeichenkette in dem gesucht wird
  • muster - Zeichenkette, die innnerhalb der ersten gesucht wird
  • position - Startpositition der Suche

Return Value

  • Gibt eine Ganzzahl zurück

Beispiele

Standardfälle

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

Benutzung von Variablen

indexOf('[pos=1]','x',0)
indexOf('text','[var=a]',0)
indexOf('[var=b]','x',[pos=2])

JUnit Tests

[Anzeigen]

@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)
public void testIndexOfWithThreeTextArguments(){
  getEvaluator().getNumberResult("indexOf('str', 'str', '0')");
}

@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testIndexOfWithOneArgument(){
		getEvaluator().getNumberResult("indexOf(1)");
}

@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testIndexOfWithTwoArguments(){
  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)");
}

Hinweise

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