【问题标题】:encodeURIComponent but in lowercaseencodeURIComponent 但小写
【发布时间】:2021-11-23 11:20:38
【问题描述】:

我有一些要求可以通过直接使用 encodeURIComponent 来轻松满足,但生活从来都不是一件容易的事,因为这个客户端系统的特殊工作方式,我们需要以 url 格式对来自数据库的内容进行编码(例如 products/household+products/) 并将其转换为必须遵循“编码”格式的存储 blob (products%2Fhousehold%2Bproducts%2F),但是必须小写 (%2F -> %2F) .

然而,第二个是客户也有区域化页面并且必须保持大写(例如 products/GB/household+products)。 GB 必须保持大写,所以我不能用 .toLowerCase() 地毯轰炸整个事情

有什么想法吗?

【问题讨论】:

  • 调用encodeURIComponent 并使用正则表达式将%XX 替换为%xx 结果?我相信您可以传递一个函数作为正则表达式的替换,因此您可以轻松地添加组并在匹配部分调用 toLowerCase...

标签: javascript encodeuricomponent


【解决方案1】:

您可以使用正则表达式来匹配编码的“字节”并将它们转换为小写:

function encode(text) {
    const uriEncoded = encodeURIComponent(text);
    return uriEncoded.replace(/%\w\w/g, match => match.toLowerCase());
}

产生:

> encode("products/GB/household+products")
'products%2fGB%2fhousehold%2bproducts'

您可以看到GB 被保留,而%2f%2b 为小写。

也很容易解码,使用相同的方法,但您首先必须转换为大写然后才能正常解码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多