如何自定义清理字符串以使其适合 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?的主要内容,如果未能解决你的问题,请参考以下文章