CharAt

Aus JACK Wiki
Zur Navigation springen Zur Suche springen

Beschreibung

Die Funktion charAt gibt das Zeichen an einer beliebigen Stelle innerhalb einer Zeichenkette zurück. Das erste Zeichen hat dabei den Index 0, das zweite Zeichen den Index 1 usw.

Die Funktion erwartet eine Zeichenkette und eine natürliche Zahl und gibt das Zeichen an der entsprechenden Stelle zurück.

Syntax

charAt(String zeichenkette, int stelle)

Parameter

  • zeichenkette - die Zeichenkette, aus der das Zeichen bestimmt wird
  • stelle - das wievielte Zeichen zurückgegeben werden soll

Return Value

  • Gibt eine Character zurück.

Beispiele

charAt('hallo','0')   --> returns h
charAt('JACK','3')   --> returns K

JUnit Tests

@Before 
public void beforeTest() {
  placeFillInVariable(1, OMParser.parse("W"));
		
  placeExerciseVariable("a", OMParser.parse("W"));
}
	
@Test 
public void testCharAt() {
  assertTrue("'o'".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',4)")));
  assertTrue("'W'".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',6)")));
  assertTrue("' '".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',5)")));
  assertTrue("'!'".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',11)")));
  assertTrue("'1'".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',12)")));
}
	
@Test (expected=StringIndexOutOfBoundsException.class) 
public void testCharAtOutOfBoundsIndexNegative() {
  getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',-1)");
}
	
@Test (expected=StringIndexOutOfBoundsException.class) 
public void testCharAtOutOfBoundsIndexToHigh() {
  getEvaluator().getResultAsEvaluatorString("charAt('Hello World!1',55)");
}
	
@Test 
public void testCharAtWithInput() {		
  assertTrue("'W'".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello [pos=1]orld!1',6)")));
}
	
@Test 
public void testCharAtWithVariables() {
  assertTrue("'W'".equals(getEvaluator().getResultAsEvaluatorString("charAt('Hello [var=a]orld!1',6)")));
}
	
@Test 
public void testCharAtWithExpressions() {
  assertTrue("'b'".equals(getEvaluator().getResultAsEvaluatorString("charAt(charAt('abc', 1), 0)")));
  assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("charAt('abc', charAt('00', 0))")));
}
	
@Test (expected=InvalidEvaluatorFunctionArgumentException.class)
public void testCharAtWithWrongInputCharacter() {
  getEvaluator().getResultAsEvaluatorString("charAt('abcd', a)");
}
	
@Test (expected=UnsupportedEvaluatorFunctionException.class)
public void testCharAtWithOneArgument() {
  getEvaluator().getResultAsEvaluatorString("charAt('abcd')");
}
	
@Test (expected=UnsupportedEvaluatorFunctionException.class)
public void testCharAtWithThreeArguments() {
  getEvaluator().getResultAsEvaluatorString("charAt('abcd', 0, 2)");
}
	
@Test (expected=UnsupportedEvaluatorFunctionException.class)
public void testCharAtWithTwoRationalArguments() {
  getEvaluator().getResultAsEvaluatorString("charAt(5, 12)");
}
	
@Test (expected=UnsupportedEvaluatorFunctionException.class)
public void testCharAtWithTwoTextArguments() {
  getEvaluator().getResultAsEvaluatorString("charAt('abc', '1')");
}

@Test (expected=UndefinedExerciseVariableException.class)
public void testCharAtWithMissingExcerciseVariable() {
  getEvaluator().getResultAsEvaluatorString("charAt('[var=j]', 2)");
}
	
@Test (expected=UndefinedFillInVariableException.class)
public void testCharAtWithMissingInput() {
		getEvaluator().getResultAsEvaluatorString("charAt('[pos=42]', 2)");
}

Hinweise

  • Die angegebene Zahl darf nicht kleiner als 0 und nicht größer als die Länge der Zeichenkette -1 sein.