繁体   English   中英

正则表达式 | 应用函数式编程将字符串转换为 URL Slug

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM