Execute the function. The function must return
a valid object.
String theFirstString = m_arg0.execute(xctxt).str();
String theSecondString = m_arg1.execute(xctxt).str();
String theThirdString = m_arg2.execute(xctxt).str();
int theFirstStringLength = theFirstString.length();
int theThirdStringLength = theThirdString.length();
// A vector to contain the new characters. We'll use it to construct
// the result string.
StringBuffer sbuffer = new StringBuffer();
for (int i = 0; i < theFirstStringLength; i++)
{
char theCurrentChar = theFirstString.charAt(i);
int theIndex = theSecondString.indexOf(theCurrentChar);
if (theIndex < 0)
{
// Didn't find the character in the second string, so it
// is not translated.
sbuffer.append(theCurrentChar);
}
else if (theIndex < theThirdStringLength)
{
// OK, there's a corresponding character in the
// third string, so do the translation...
sbuffer.append(theThirdString.charAt(theIndex));
}
else
{
// There's no corresponding character in the
// third string, since it's shorter than the
// second string. In this case, the character
// is removed from the output string, so don't
// do anything.
}
}
return new XString(sbuffer.toString());