代码之家  ›  专栏  ›  技术社区  ›  Gracie

从url中删除内容并用javascript和regex构建字符串

  •  0
  • Gracie  · 技术社区  · 6 年前

    我想使用javascript从一个URL中删除项目名称。不确定regex是否是实现这一点的方法,因为我需要在提取项名称之后将其大写。

    以前 https://www.sportsdirect.com/karrimor-lifestyle-fleece-mens-443326?colcode=44332603

    "Karrimor Lifestyle Fleece Mens 443226"

    那么在URL之后和之前有什么区别吗?字符和去掉任何字符

    3 回复  |  直到 6 年前
        1
  •  0
  •   bkis    6 年前

    这应该有效:

    var result = 'https://www.sportsdirect.com/karrimor-lifestyle-fleece-mens-443326?colcode=44332603'
      .replace(/(.*\/|\?.*)/g, '')
      .split(/\W/)
      .map(function(w) {
        return w[0].toUpperCase() + w.substr(1);
      })
      .join(' ');
      
    console.log(result);

    要解释代码片段的作用(逐行):

    1. replace(/(.*\/|\?.*)/g, '') 通过regex删除不需要的url部分(但保留路径字符串,包括连字符等)。
    2. split(/\W/) 沿非字字符拆分为多个部分(生成数组)
    3. map(function(w) {... 转换每个数组元素…
    4. return w[0].toUpperCase() + w.substr(1); …把第一个字母大写。
    5. .join(' '); …然后再将元素连接到一个字符串中,用空格分隔。
        2
  •  0
  •   A l w a y s S u n n y    6 年前

    使用 new URL(url).pathname.substring(1) 得到 pathname 从你的URL。然后 分裂 它通过 - , 地图 它到 大写字母 只有每个单词的第一个字符,最后 参加 它回来了。希望这是你想要的:)

    var url = 'https://www.sportsdirect.com/karrimor-lifestyle-fleece-mens-443326?colcode=44332603';
    var expected_part = new URL(url).pathname.substring(1); // to ignore 1st character
    var expected_result = expected_part.toLowerCase()
      .split('-')
      .map((s) => s.charAt(0).toUpperCase() + s.substring(1))
      .join(' ');
    console.log(expected_result);
        3
  •  0
  •   Lajos Arpad    6 年前

    我就是这样做的:

    function capitalizeFirstLetter(string) {
        return string.charAt(0).toUpperCase() + string.slice(1);
    }
    var input = "https://www.sportsdirect.com/karrimor-lifestyle-fleece-mens-443326?colcode=44332603";
    input = input.substring(0, input.indexOf("?"));
    input = input.substring(input.lastIndexOf("/") + 1);
    input = input.split("-").map(x => capitalizeFirstLetter(x)).join(" ");
    

    capitalizeFirstLetter 被取走 How do I make the first letter of a string uppercase in JavaScript?