2

我需要替换除第一个字符之外的所有单个字符。因为我使用的是我用 Python 编写的服务器。我总是在 Url 上传递的信息。网址是:

http://localhost:8100/index2?decode=demo_title=Demo+title&proc1_script=script.sh+parameters&inputp3_id=pepepe&outputp2_value=&demo_input_description=hola+mundo&outputp4_visible=on&inputdata1_max_pixels=1024000&inputdata1_image_depth=1x8i&tag=&outputp1_id=nanana&proc1_src_compresion=zip&outputp3_description=&inputp1_type=text&inputdata1_description=input+data+description&inputp2_description=bien%3F&inputp3_description=funciona&outputp3_type=header&outputp2_visible=on&outputp3_visible=on&outputp1_type=header&outputp3_value=&demo_params_description=va+bien&demo_result_description=win%3F&outputp1_description=&inputdata1_type=image2d&inputp1_value=si&proc1_chk_script=off&outputp4_info=&outputp2_id=nanfdsvfa&inputp1_description=funciona&demo_wait_description=boh&outputp4_description=&inputp2_id=papapa&inputdata1_id=id_lsd&inputp1_visible=on&proc1_chk_cmake=off&proc1_cmake=-D+CMAKE_BUILD_TYPE%3Astring%3DRelease+&inputp3_visible=+off&outputp1_visible=on&outputp1_value=&outputp4_value=&inputp2_visible=on&proc1_source=lsd-1.5.zip&inputp3_value=si&proc1_make=-j4+-C+&images_config_file=cfgmydemo.cfg&outputp2_type=header&proc1_subdir=xxx-1.5&proc1_chk_make=on&inputp1_id=popopo&proc1_url=http%3A%2F%2Fwww.ipol.im%2Fpub%2Falgo%2F...&inputp2_value=no&demo_data_filename=data_saved.cfg&inputdata1_info=info_lsd&outputp3_info=&inputdata1_image_format=.pgm&inputdata1_compress=False&outputp1_info=&outputp3_id=nananartrtrt&inputp2_type=integer&proc1_id=lsd&inputp3_type=float&outputp2_description=&outputp4_type=header&outputp2_info=&outputp4_id=nana&tag=&inputp4_id=popopo&inputp4_type=text&inputp4_description=cddc&inputp4_value=sdlk&inputp4_info=dsl

现在我有这个问题,第一个字符在 URL 上很重要,不必替换。

这是我用于替换 Javascript 中所有字符的脚本:

var $fm = $("#formparam");
                $.get($fm.attr('${nextstep}'))
                    .done(function(data, ok){
                    var fr=$fm.serialize();
                    fr=fr.replace(/\&/g,"+%23+");
                    fr=fr.replace(/\=/g,"%24+");
                    alert('call done: ' +fr);
                    // data is the content of the response
                    document.location.href+="index2?"+fr})
                    .fail(function(data){
                    alert('call failed');
                    // call failed for some reason -- add error messaging?
                    });

以及如何更改脚本以不替换第一个 = ?

更新:

我想更改所有单个字符 = 而不是第一个。

例子

some=string=here=more_people 

some=string_here_more_people 
4

2 回答 2

3

我认为这应该可以解决问题:

function replacew(str,pattern,value){
    int index=str.search(pattern);
    return str.substr(0,index+1)+str.substr(index+1).replace(pattern,value);
}
于 2013-03-27T20:34:52.130 回答
2

http://jsfiddle.net/EarUc/5/

从一些字符串开始(empieza con alguna string

var str1 = "=moo=kie=";

调用函数:(llame la funcion)

alert(replaceButFirst(str1, "="));

包括以下要使用的代码:(incluya el codigo siguiente para usarlo)

function replaceButFirst(strOriginal, strToReplace){

var n=strOriginal.indexOf(strToReplace);
var firstPart = strOriginal.substring(0, n + 1);
    var tempString = strOriginal.substring(n + 1);
tempString = tempString.replaceAll(strToReplace, "");

return firstPart + tempString;

}

函数的原始使用可以在这里找到

String.prototype.replaceAll = function(str1, str2, ignore) 
{
    return this.replace(new RegExp(str1.replace(/([\/\,\!\\\^\$\{\}\[\]\(\)\.\*\+\?\|\<\>\-\&])/g,"\\$&"),(ignore?"gi":"g")),(typeof(str2)=="string")?str2.replace(/\$/g,"$$$$"):str2);
}
于 2013-03-27T20:58:30.457 回答