我可以在Javascript中进行字符串格式化吗?

时间:2011-10-31 10:12:35

标签: javascript jquery

  

可能重复:
  JavaScript equivalent to printf/string.format

我正在创建这样的代码:

var ds = "ds=" + encodeURIComponent($('#DataSource').val());
var ex = "ex=" + encodeURIComponent($('#EID').val());
var to = "to=" + encodeURIComponent($('#TID').val());
var st = "st=" + encodeURIComponent($('#SID').val());
window.location.href = '/person?' + ds + "&" + ex + "&" + to + "&" + st;

在Javascript中是否有某些方法可以使用格式化来使代码看起来更清晰?我还需要对每个元素进行编码,还是只需对变量abc进行编码?

5 个答案:

答案 0 :(得分:1)

你真的没有太多可以做的事情。你可以为encodeURIComponent方法添加别名,如果你正在寻找一些一点的东西,可以使用join()数组:

var e = encodeURIComponent, 
    arr = [
        "ds=" + e($('#DataSource').val()),
        "ex=" + e($('#EID').val()),
        "to=" + e($('#TID').val()),
        "st=" + e($('#SID').val())
    ];

window.location.href = '/person?' + arr.join("&");

答案 1 :(得分:0)

使用<form>并将输入标记放入其中,然后拨打$('formContainer').serialize();

在向URI发送数据时,最好使用名称 - 值对(查询字符串)。为您要捕获的所有输入标记提供名称作为id。你会得到类似的东西:

/人/数据源= DS&安培; EID = EX&安培; TID =至&安培; SID = ST

-HTH

答案 2 :(得分:0)

你为什么不写:

window.location.href = encodeURIComponent('/person?' + 
    $('#DataSource').val() + "&" 
    + $('#EID').val() + "&" + $('#TID').val() + "&"
    + $('#SID').val());

答案 3 :(得分:0)

查看sprintf()

这也可以提供帮助:JavaScript equivalent to printf/string.format

答案 4 :(得分:0)

var str = "/person?ds=%x&ex=%x&to=%x&st=%x";

var tokens = [
  $("#DataSource").val(),
  $("#EID").val(),
  $("#TID").val(),
  $("#SID").val()
];

tokens.forEach(function (token) {
  str = str.replace("%x", encodeURIComponent(token));
});

location.href = str;

如果您的令牌字符串中有%x,这绝对会失败。

如果您想要更通用的解决方案,请尝试underscore.string