Substring: Unterschied zwischen den Versionen

Aus JACK Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(10 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=== Zugehörige Evaluatoren ===
*'''MathEvaluator'''
=== Beschreibung ===
=== Beschreibung ===
Die Funktion ''Substring'' gibt anhand des Anfangs- und der Endposition eine Zeichenkette aus einer übergebenen Zeichenkette zurück. Die Funktion erwartet einen Zeichenkette aus der eine Zeichenkette extrahiert werden soll und jeweils eine Zahl für die Anfangs- und die Endposition. Die Werte der Positionen dürfen nicht geringer als 0 und nicht größer als die Länge der übergebenen Zeichenkette sein. Es wird die extrahierte Zeichenkette zurück gegeben.
Die Funktion ''Substring'' gibt anhand des Anfangs- und der Endposition eine Zeichenkette aus einer übergebenen Zeichenkette zurück. Die Funktion erwartet eine Zeichenkette aus der eine Zeichenkette extrahiert werden soll und jeweils eine Zahl für die Anfangs- und die Endposition. Die Werte der Positionen dürfen nicht geringer als 0 und nicht größer als die Länge der übergebenen Zeichenkette sein. Es wird die extrahierte Zeichenkette zurück gegeben.


=== Syntax ===
=== Syntax ===
  substring(String zeichenkette, int anfangsPosition, int endPosition)
  substring([[Zeichenkette]] zeichenkette, [[Ganzzahl]] anfangsPosition, [[Ganzzahl]] endPosition)


===Parameter ===
===Parameter ===
Zeile 9: Zeile 12:
* '''anfangsPosition''' - die Position des ersten Zeichens in der Zeichenkette, ab dem extrahiert werden soll.
* '''anfangsPosition''' - die Position des ersten Zeichens in der Zeichenkette, ab dem extrahiert werden soll.
* '''endPosition''' - die Position+1 des letzten Zeichen, bis zu dem extrahiert werden soll.
* '''endPosition''' - die Position+1 des letzten Zeichen, bis zu dem extrahiert werden soll.


=== Return Value ===
=== Return Value ===
* Gibt einen String zurück
* Gibt einen [[Zeichenkette]] zurück


=== Beispiele ===
=== Beispiele ===
====Standardfälle====
==== Standardfälle ====
  substring('hello world',0,5)  --> returns 'hello'
  substring('hello world', 0, 5)  --> returns 'hello'
substring('hello world',6,11)  --> returns 'world'
   
   
substring('hello world', 6, 11)  --> returns 'world'
==== Benutzung mit Variablen ====
==== Benutzung mit Variablen ====
  substring('[pos=1]',0,5)
  substring('[var=a]', 6, 11)
  substring('[var=a]',6,11)
 
==== Benutzung mit studentischen Eingaben ====
'''JACK2:'''
  substring('[pos=1]', 0, 5)


====JUnit Tests====
'''JACK3:'''
<syntaxhighlight lang="java" class="mw-collapsible mw-collapsed">
substring([input=field1], 0, 5)
@Before
public void beforeTest(){
  placeFillInVariable(10, OMParser.parse("helloworld"));
  placeFillInVariable(0, OMParser.parse("0"));
  placeFillInVariable(5, OMParser.parse("5"));
 
  placeExerciseVariable("suba", OMParser.parse("helloworld"));
  placeExerciseVariable("a", OMParser.parse("0"));
  placeExerciseVariable("b", OMParser.parse("5"));
}
@Test public void testSubstring(){
  assertTrue("'hello'".equals(getEvaluator().getResultAsEvaluatorString("substring('hello world', 0, 5)")));
  assertTrue("'world'".equals(getEvaluator().getResultAsEvaluatorString("substring('hello world', 6, 11)")));
  assertTrue("' '".equals(getEvaluator().getResultAsEvaluatorString("substring('hello world', 5, 6)")));
  assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 0, 1)")));
  assertTrue("'e'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4, 5)")));
  assertTrue("''".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4, 4)")));
  assertTrue("'e'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4.0, 5)")));
}
@Test public void testSubstringWithInput(){
  assertTrue("'orld'".equals(getEvaluator().getResultAsEvaluatorString("substring('[pos=10]', 6, 10)")));
  assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', [pos=0], 1)")));
  assertTrue("'e'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4, [pos=5])")));
}
@Test public void testSubstringWithVariables(){
  assertTrue("'orld'".equals(getEvaluator().getResultAsEvaluatorString("substring('[var=suba]', 6, 10)")));
  assertTrue("'a'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', [var=a], 1)")));
  assertTrue("'e'".equals(getEvaluator().getResultAsEvaluatorString("substring('abcde', 4, [var=b])")));
}
@Test(expected =InvalidEvaluatorFunctionArgumentException.class)
public void testSubstringWithWrongInputSecondAndThirdArgument(){
  getEvaluator().getResultAsEvaluatorString("substring('hello', -1, 6)");
}
@Test(expected =InvalidEvaluatorFunctionArgumentException.class)
public void testSubstringWithWrongInputSecondArgumentAsPointNumber(){
  getEvaluator().getResultAsEvaluatorString("substring('hello', 1.3, 2)");
}
@Test(expected =InvalidEvaluatorFunctionArgumentException.class)
public void testSubstringWithWrongInputThirdArgumentAsPointNumber(){
  getEvaluator().getResultAsEvaluatorString("substring('hello', 3, 1.5)");
}
@Test(expected=InvalidEvaluatorFunctionArgumentException.class)
public void testSubstringWithWrongInputCharacter(){
  getEvaluator().getResultAsEvaluatorString("substring(a, a, a)");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testSubstringWithOneArgument(){
  getEvaluator().getResultAsEvaluatorString("substring('hello')");
}
@Test(expected=UnsupportedEvaluatorFunctionException.class)
public void testSubstringWithTwoArguments(){
  getEvaluator().getResultAsEvaluatorString("substring('hello', 2)");
}
@Test(expected=UndefinedExerciseVariableException.class)
public void testSubstringWithMissingExerciseVariable(){
  getEvaluator().getResultAsEvaluatorString("substring('[var=j]', '[var=j]', '[var=j]')");
}
@Test(expected=UndefinedFillInVariableException.class)
public void testSubstringWithMissingInput(){
  getEvaluator().getResultAsEvaluatorString("substring('[pos=42]', '[pos=42]', '[pos=42]')");
}
</syntaxhighlight>


=== Hinweise ===
=== Hinweise ===
* Die Position 0 ist das erste Zeichen, nicht Position 1
* Das erste Zeichen steht an Position 0, nicht Position 1.


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

Aktuelle Version vom 17. April 2024, 09:26 Uhr

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Die Funktion Substring gibt anhand des Anfangs- und der Endposition eine Zeichenkette aus einer übergebenen Zeichenkette zurück. Die Funktion erwartet eine Zeichenkette aus der eine Zeichenkette extrahiert werden soll und jeweils eine Zahl für die Anfangs- und die Endposition. Die Werte der Positionen dürfen nicht geringer als 0 und nicht größer als die Länge der übergebenen Zeichenkette sein. Es wird die extrahierte Zeichenkette zurück gegeben.

Syntax

substring(Zeichenkette zeichenkette, Ganzzahl anfangsPosition, Ganzzahl endPosition)

Parameter

  • zeichenkette - die Zeichenkette aus der eine Zeichenkette extrahiert werde soll.
  • anfangsPosition - die Position des ersten Zeichens in der Zeichenkette, ab dem extrahiert werden soll.
  • endPosition - die Position+1 des letzten Zeichen, bis zu dem extrahiert werden soll.

Return Value

Beispiele

Standardfälle

substring('hello world', 0, 5)   --> returns 'hello'

substring('hello world', 6, 11)   --> returns 'world'

Benutzung mit Variablen

substring('[var=a]', 6, 11)

Benutzung mit studentischen Eingaben

JACK2:
substring('[pos=1]', 0, 5)
JACK3:
substring([input=field1], 0, 5)

Hinweise

  • Das erste Zeichen steht an Position 0, nicht Position 1.