<SCRIPT LANGUAGE="JavaScript">
<!--
var a="\x0fA\x0fB\x0fC\x0fD\x0fE";
var b="\x0fA\x0fD";a = a.replace(new RegExp("["+ b.replace(/\x0f/g, "") +"]", "g"), "").replace(/\x0f\x0f/g, "\x0f");
alert(a)
//-->
</SCRIPT>

解决方案 »

  1.   

    有点问题,最后一个是B中的字符的话,会替换不掉的,稍微改下
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var a="\x0fA\x0fB\x0fC\x0fD\x0fE";
    var b="\x0fA\x0fD";
    a=a.replace(/\x0f/g,"").replace(new RegExp("["+ b.replace(/\x0f/g, "") +"]", "g"), "").replace(/[\s\S]/g,function(a){return "\x0f"+a})
    //a = a.replace(new RegExp("["+ b.replace(/\x0f/g, "") +"]", "g"), "").replace(/\x0f\x0f/g, "\x0f");
    alert(a)
    //-->
    </SCRIPT>
      

  2.   

    稍微改下,其实我是想问,就是您的mztree里面的相关问题:
    tree.names是一个parentid_id通过\x0f连起来的字符串
    现在我要删除一个节点,那么,我通过递归,把这个节点下面的sourceIndex也通过\x0f连起来,
    然后,在tree.names中,把要删除的节点的sourceIndex删除掉,重新加载节点上面是思路,下面是代码
    function deleteNode(){
    var key=treeForm.key.value;//节点的ID
    var label=treeForm.label.value;
    var cur_Node=tree.node[key];
    var arr=[];
    getChildsNames(cur_Node,arr);
    var o="\x0f"+arr.join("\x0f");
    var args=tree.names;
                       //删除sourceIndex代码
                      tree.names=deleteSourceIndex(args,o);  //deleteSourceIndex需要实现
                       tree.node[key].childNodes.length = 0;
    tree.node[key].isLoad   =   false;   
    tree.node[key].isExpand=false;
      tree.expand(key,true);
    }
    /**
    递归获得sourceIndex
    */
    function getChildsNames(n,arr){
        arr.push(n.sourceIndex);
    if(n.hasChild){
    var nodes = n.childNodes;
    for(var i=0;i<nodes.length;i++){
    var n=nodes[i];
    getChildsNames(n,arr);
    }
    }
    }