0

我在使用 JavaScript 时遇到了一些问题。我从数据库中获取编码字符串并放入它的 JavaScript 数组。字符串包含 \\ 并且当我警告字符串长度大于它时。我怎样才能得到原始字符串?这是我的字符串

var a = "eir~FdezuOha@ha_@rPzjQbnChxI~_Gf}\\|aAfnu@exNjmm@ilDvi]~Ttnz@tmLlyg@vi@nj`@`vIlrZznB`d^dd@zsVbvFdia@~bK~yT~uQxsPpmA|wL_bD|cCwiEfaEil@d`s@keEzri@u`Erw~Am|Dp{x@qJjbfBx}AdyrDkPtme@tgClei@feAziLrwFhJl}Ax`LvwHz||@nmHtrp@hGnnc@_D~j}@a@hskA_GjfuAlj]t_`@`sTheWjs@h{\\|AbxOj}LnxK`fN|gXtyH~cBrvElnKhaPxk`@jxB~v\\tqK~lLuUvkh@kBz~|As@tyfCfCbck@dbJhfh@h_QprrAcaC|czAunHbsr@qkMpm`@osk@|opB}nPvjvAthDp_kBhQdvt@zyK`pdAjlIx|OdiJln_@ngKzzu@l`YtdeAlqQrjZfzc@|y\\v{`@zks@h_@xcWf_CjoaArzNrbkAbfNb~c@nsVzeYjlTno]|hJxzU|~AflJvyDncJpnJdkKabBn`ToeE|pYcr@thRqpAh{NraHvkKnfCv}Js`@pmRx}EroV`dItwQnpQlcM~jAzrGikJdaHujMjxJs`@bxQzsEjlKmyCnrJc|FzrXu`FzhJ`eE`|LvfD`}`@rrDrr_@diHbdQbaBzrRajAd`[rzL~rwAtfDbhTn|HvvKluRvqWjiNxjHnlE|@ppKpfJbtDroDth@vre@oFnxRigF|nO{bEbwRwpGhmLld@rrKxuCbbRbnKbhSnve@vrr@}sBxqs@f{AnwZvZh{a@qnGdnSa~AlrKfmLjhe@q|AfmOj|FvlYzvE|br@j{Axr_@hkFfre@jhIdrg@udJbuRknHpbBgzBpdFc~AhyJorBzaOu|AffTpzFnaLv_W`{d@lhPrfJvxEfnJ~`KvuJ`nE~bTgzGztVwf@vsHngJ`eI~vV`yFv`m@sgAhhGwcC~iHtiH`ed@ruUbtO`tYv~Vlf^hdHlq@bnFvqLxin@p|Rxp[rkWnyTzka@jtVfqLvtF|aa@vcF`|Erc@~cIp}MjyUzuC|{O`lGp~Qhn@|rc@~mS|eg@vtZzi_@hqL|uSpkOrqHldHhkHl|Kjk[bgLdxItqa@jtDjiPbbDhwQryQlou@beVh|LnrJw}@~yRdk`@hhsAf~RtwSnbRblZp|CtgZfs]radA~~Bf_[zvArjTrcFfjNtzb@xgWziUtsN|af@tp\\blEluFpuFmsDn|FaoCdwCqlB~hFb|D|nMthQl_FfvFsxA|tYl|AnwP_Fzca@zbApjr@x]xP"


alert(a.length) //length is 1279

$.ajax({
    cache : false,
    url : 'get_polylines.action',
    type : 'post',
    dataType : 'json',
    async : false,
    success : function(result) {
       var polyline = result.polyline;

       var arr = new Array();
       var k = 0;
       for ( var j = 0; j < polyline.length; j++) {
          arr [k] = polyline[j];
          k++;
       }
      for(var i=0; i<arr.length; i++){
        alert(arr[i].length); //length is 1284
       }
    },
    
});

当我将此字符串放入输入隐藏字段然后获取值时,它也会警告长度为 1284。

4

1 回答 1

0

用于String.split()切割你的数组,而不是遍历字符串:

var a = "eir~FdezuOha@ha_@rPzjQbnChxI~_Gf}\\|aAfnu@exNjmm@ilDvi]~Ttnz@tmLlyg@vi@nj`@`vIlrZznB`d^dd@zsVbvFdia@~bK~yT~uQxsPpmA|wL_bD|cCwiEfaEil@d`s@keEzri@u`Erw~Am|Dp{x@qJjbfBx}AdyrDkPtme@tgClei@feAziLrwFhJl}Ax`LvwHz||@nmHtrp@hGnnc@_D~j}@a@hskA_GjfuAlj]t_`@`sTheWjs@h{\\|AbxOj}LnxK`fN|gXtyH~cBrvElnKhaPxk`@jxB~v\\tqK~lLuUvkh@kBz~|As@tyfCfCbck@dbJhfh@h_QprrAcaC|czAunHbsr@qkMpm`@osk@|opB}nPvjvAthDp_kBhQdvt@zyK`pdAjlIx|OdiJln_@ngKzzu@l`YtdeAlqQrjZfzc@|y\\v{`@zks@h_@xcWf_CjoaArzNrbkAbfNb~c@nsVzeYjlTno]|hJxzU|~AflJvyDncJpnJdkKabBn`ToeE|pYcr@thRqpAh{NraHvkKnfCv}Js`@pmRx}EroV`dItwQnpQlcM~jAzrGikJdaHujMjxJs`@bxQzsEjlKmyCnrJc|FzrXu`FzhJ`eE`|LvfD`}`@rrDrr_@diHbdQbaBzrRajAd`[rzL~rwAtfDbhTn|HvvKluRvqWjiNxjHnlE|@ppKpfJbtDroDth@vre@oFnxRigF|nO{bEbwRwpGhmLld@rrKxuCbbRbnKbhSnve@vrr@}sBxqs@f{AnwZvZh{a@qnGdnSa~AlrKfmLjhe@q|AfmOj|FvlYzvE|br@j{Axr_@hkFfre@jhIdrg@udJbuRknHpbBgzBpdFc~AhyJorBzaOu|AffTpzFnaLv_W`{d@lhPrfJvxEfnJ~`KvuJ`nE~bTgzGztVwf@vsHngJ`eI~vV`yFv`m@sgAhhGwcC~iHtiH`ed@ruUbtO`tYv~Vlf^hdHlq@bnFvqLxin@p|Rxp[rkWnyTzka@jtVfqLvtF|aa@vcF`|Erc@~cIp}MjyUzuC|{O`lGp~Qhn@|rc@~mS|eg@vtZzi_@hqL|uSpkOrqHldHhkHl|Kjk[bgLdxItqa@jtDjiPbbDhwQryQlou@beVh|LnrJw}@~yRdk`@hhsAf~RtwSnbRblZp|CtgZfs]radA~~Bf_[zvArjTrcFfjNtzb@xgWziUtsN|af@tp\\blEluFpuFmsDn|FaoCdwCqlB~hFb|D|nMthQl_FfvFsxA|tYl|AnwP_Fzca@zbApjr@x]xP"
arr = a.replace(/\\/g,"\\\\").split("");
console.log(arr.length); //1284

所以用这个替换你的ajax调用的“成功”位:

success : function(result) {
   var polyline = result.polyline;

    var arr = polyline.replace(/\\/g,"\\\\").split("");
    var k = arr.length; //1284
}

输出不同长度的原因是因为您"\"的字符串中有反斜杠 ( ) 字符。这些通常用于转义特殊字符,并且需要在从字符串构建数组之前进行转义。
替换是用 完成的.replace(/\\/g,"\\\\"),将所有单反斜杠 ( "\") 替换为双引号 ( "\\")。这导致数组返回 1284 的长度,这实际上是正确的:

console.log(arr);
==> [<...> "G", "f", "}", "\", "\", "|", "a", "A", <...>]
//Representing:
"Gf}\\|aA";
于 2012-11-29T09:04:05.940 回答