【问题标题】:Remove sub-string from URL containing only numbers [duplicate]从仅包含数字的 URL 中删除子字符串 [重复]
【发布时间】:2019-08-09 13:32:58
【问题描述】:

我有几个这样的网址

  • https://{Domain}/rent/abcdef/2019/Canada
  • https://{Domain}/buy/Supported/2019/Gill-Avenue

我想从这些 Url 中删除 '2019' 或仅包含数字的任何部分,以便 Url 如下所示

  • https://{Domain}/rent/abcdef/Canada

  • https://{Domain}/buy/Supported/Gill-Avenue

我怎样才能使用 javascript 实现这一目标

【问题讨论】:

  • 您不需要 jQuery,因为它主要是一个用于操作 DOM 的框架。你需要 JS,特别是正则表达式。
  • 这里有正则表达式教程:regular-expressions.info

标签: javascript


【解决方案1】:

你可以试试这个;

let str = "https://test.com/rent/abcdef/2019/Canada";
str.replace(/\/\d+/g, '');

【讨论】:

  • 考虑添加全局标志以支持 URL 包含一组以上数字 /\/\d+/g 的情况。
  • 如果文本包含超过数字部分,则需要。谢谢@Grafluxe
  • 差不多。您必须将变量定义为str.replace(),或将str 更改为它的替换。检查我的答案。
【解决方案2】:

你应该尝试这样的事情: 在 '/' 上拆分,使用 /d 正则表达式过滤并使用 '/' 重新加入

抱歉,我现在无法尝试

window.location.href.split('/').filter(substr => !(/^\d+$/.match(substr))).join('/')

【讨论】:

  • 您可以简单地使用replace 函数来解决这个问题,而无需调用4 个单独的函数。它会更快、更简洁、更易于理解。
  • “对不起,我现在不能尝试”你是什么意思?
【解决方案3】:

首先尝试这样做:

var str = "https://example.com/rent/abcdef/2019/Canada"
str = str.replace(/[0-9]/g, '');
str = str.replace("f//", "f/");

第二个:

var str = "https://example.com/rent/abcdef/2019/Canada"
str = str.replace(/[0-9]/g, '');
str = str.replace("d//", "d/");

所以这是如果您只想替换 1 位数字。其中第一个有效,但在旧版本中 / 之前的最后一个字母之后的整个链接中添加了一个新的 / 反斜杠。要删除它,请执行第二个,其中包含最后一个字母,不要删除://。方法是在使用第一个replace()函数后,在反斜杠之前找到每个数字的最后一个字母,并替换它们以删除多余的反斜杠。

这可能适用于简单的事情,比如如果您已经知道 URL,但对于复杂的事情,比如非常大的项目,这不是简单的方法。如果您想要“简单”,请查看其他答案。

如前所述,您也可以这样做:

let str = "https://test.com/rent/abcdef/2019/Canada";
var withNoNum = str.replace(/\/\d+/g, '');

这将删除数字组。所以我添加了一个新字符串withNoNum,它是str 的替换,没有数字,这可能会更好,因为如果您正在做一个允许您发送自己的网站并从中删除数字以获得新网站。

这也可以帮助您解决这个问题:removing numbers from string

【讨论】:

    猜你喜欢
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2016-07-16
    • 2021-10-13
    • 2018-06-09
    • 2020-09-27
    • 1970-01-01
    相关资源
    最近更新 更多