【问题标题】:Replacing hash with a string in the first n-characters of a url hash用 URL 哈希的前 n 个字符中的字符串替换哈希
【发布时间】:2017-01-16 23:25:25
【问题描述】:

我有一个$location.path(),其格式如下:

/request/add/c3smsVdMHpVvSrspy8Vwrr5Zh8qSyP7q

我有兴趣将/request/add/ 之后的哈希过滤到以下内容。如您所见,显示了最后四个字符,但之前的所有字符都标记为[FILTERED]

/request/add/[FILTERED]yP7q

我做了一些将隐藏字符转换为# 的基本代码,但在尝试应用字符串[FILTERED] 之后 /request/add

old_path = $location.path()
path = old_path.replace(/.(?=.{4,}$)/g, '#');

【问题讨论】:

  • 看来您使用的是 AngularJS 1.x 或 Angular 2。答案可能取决于您用于路由的内容。
  • 你可以使用 .split('/') 然后把它放到一个新的 var 中吗?
  • @Darkrum 如果只是教我如何使用不是这个问题的完整点的子字符串,那它是如何重复的?

标签: javascript url hash


【解决方案1】:

您可以使用substring。这将为您提供[FILTERED] 内容,然后您可以对它们做任何您想做的事情。

var old_path = '/request/add/c3smsVdMHpVvSrspy8Vwrr5Zh8qSyP7q';
var filtered = old_path.substring('/request/add/'.length, old_path.length - 4);
var path = old_path.replace(filtered, '[FILTERED]');
console.log(path);

【讨论】:

  • 这只会去掉前 n 个字符的子串,不会用 [FILTERED] 替换它。如果你这样做,我会接受你的回答。
  • @theGreenCabbage 已编辑。只需将提取的内容替换为您真正想要的内容即可。
  • 这是完美的,谢谢。实际上,我有一组路径,例如/request/add/,我希望通过该方法来旋转以查看是否匹配。例如/request/remove//request/update/ 等。最干净的方法是什么?
  • @theGreenCabbage 这一切都取决于您要匹配的内容。这不会“匹配”任何东西,它只是替换了字符串的一部分。
  • 匹配只是我列出的示例中的字符串匹配。没什么太花哨的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-19
  • 2020-04-10
  • 1970-01-01
  • 2021-12-23
  • 2014-07-25
  • 1970-01-01
  • 2012-08-23
相关资源
最近更新 更多