private CoreObject xGeneralReplace(CoreCall cc, boolean escapeRx) throws InterpreterException { String resultString = getCurrentObject(cc).value.toString(); Iterator<String> i = cc.members.keySet().iterator(); while (i.hasNext()) { String replaceFind = i.next(); String replaceWith = cc.members.get(replaceFind).toString(); replaceFind = replaceFind.substring(1); if (escapeRx) replaceFind = Pattern.quote(replaceFind); resultString = resultString.replaceAll(replaceFind, replaceWith); } if (cc.argCount > 0) { for (int idx = 0; idx < cc.argCount; idx++) { CoreObject rObj = cc.argPop(); if (rObj.getClass() == CoreMap.class) { CoreMap map = (CoreMap) rObj; Iterator<String> mi = map.items.keySet().iterator(); while (mi.hasNext()) { String replaceFind = mi.next(); String replaceWith = map.items.get(replaceFind).toString(); if (escapeRx) replaceFind = Pattern.quote(replaceFind); resultString = resultString.replaceAll(replaceFind, replaceWith); } } else { String replaceFind = rObj.toString(); resultString = resultString.replaceAll(replaceFind, ""); } } } return new CoreString(resultString); }