CharAt
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.