如何自定义清理字符串以使其适合 URL?

Posted

技术标签:

【中文标题】如何自定义清理字符串以使其适合 URL?【英文标题】:How to custom sanitise a string so that it's suitable for a URL? 【发布时间】:2019-06-30 12:33:39 【问题描述】:

我需要清理名称字符串(可能包含特殊字符),以便它们对 url 友好。例如,名称可能是:

The Red Hot Chili Peppers
A$AP Rocky
Christine & The Queens
Will.I.Am

这些应该是:

the-red-hot-chili-peppers
asap-rocky
christine-and-the-queens
will-i-am

还应删除感叹号、斜线、破折号等其他特殊字符。

是否有我可以使用的节点模块来执行此操作?我应该如何尝试这个?

【问题讨论】:

How to convert a Title to a URL slug in jQuery?的可能重复 在代码示例中,您将. 和空格替换为破折号,然后写下“破折号应该被删除”。 您的示例暗示“$”应转换为大写“S”,“&”应转换为“and”,句点和单个空格应转换为破折号。但是回答者不必比较您之前和之后的示例来提取需求;您应该明确说明它们。 【参考方案1】:

const str = `The Red Hot Chili Peppers
A$AP Rocky
Christine & The Queens
Will.I.Am`;

const result =
  str
  .split("\n")
  .map(el => el
    .toLowerCase()
    .replace(/[$]|[ & ]+|[.]+|[ ]+/gi, x => x === '$' ? 's' : '-'))
  .join("\n");


console.log(result);

【讨论】:

final .join 应该是 .join("\n") 而不是 .join("-")。我无法编辑,因为更改少于 6 个字符。 这取决于我认为他是一个 url 的字符串,所以用 .join("-") 做他可以改变它的工作 OP 的示例 output 保留了 input 中的换行符。 OP 的要求含糊不清,因此您必须在字里行间阅读(双关语)

以上是关于如何自定义清理字符串以使其适合 URL?的主要内容,如果未能解决你的问题,请参考以下文章

使用 CSS 包含自定义字体以使其与最大浏览器兼容的最佳方法是啥?

自定义悬停框 Plotly:Python 以适应文本

PhoneGap TabBar 自定义字体、背景图案

Java - 自定义哈希映射/表的一些要点

用于访问无法从自定义域访问的 S3 私有内容的签名 URL

在我的网站中自定义 RSS 提要