[英]Regular Expression | Apply Functional Programming to Convert Strings to URL Slugs
问题
填写 urlSlug function,以便它转换字符串标题并返回 URL 的带连字符的版本。您可以使用本节介绍的任何方法,但不要使用替换。 以下是要求:
输入是一个包含空格和标题大写单词的字符串
output 是一个字符串,单词之间的空格替换为连字符 (-)
output应该全部是小写字母
output 不应有任何空格。
我的解决方案
var globalTitle = " Winter Is Coming"; function urlSlug(title) { let regex = /(?<?\s)\s(..\s)/g let a = title.toLowerCase().trim();split(regex).join('-') return a; } console.log(urlSlug(globalTitle))
我的问题
我想使用正面和负面的前瞻/后视来解决这个问题:我的特殊问题似乎是字符串是否有多个空格。 可以进行哪些更改才能使这项工作正常进行?
您可以使用量词+
表示一个或多个
var globalTitle = " Winter Is Coming"; function urlSlug(title) { let regex = /\s+/g let a = title.toLowerCase().trim().split(regex).join('-') return a; } console.log(urlSlug(globalTitle))
您似乎不需要将字符串拆分为数组。
const slugify = (input = '') => input.trim().replace(/\s+/g, '-').toLowerCase(); console.log( slugify(" Winter Is Coming "), );
PS:这些操作很容易手动完成,因为有大量的边缘情况需要处理......
我宁愿只安装https://www.npmjs.com/package/slugify ,它带有一个不错且可配置的 API 。
console.log( slugify(" Winter is Coming", { lower: true }), );
<script src="https://cdn.jsdelivr.net/npm/slugify@1.4.0/slugify.js"></script>
无需使用正则表达式即可回答。 使用过滤方法,不需要修剪方法。 使用过滤器可以从列表中删除空格。 有关过滤器的更多信息可以找到https://www.w3schools.com/jsref/jsref_filter.asp
function urlSlug(urlTitle) {
.split(" ")
.filter(substr => substr !== "")
.join("-")
.toLowerCase();
return urlTitle;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.