【问题标题】:Replace any number of forward slashes with just two forward slashes用两个正斜杠替换任意数量的正斜杠
【发布时间】:2018-01-16 05:29:40
【问题描述】:

我正在使用类型脚本处理 angular 2。 我在 html 上有一个输入框,它接受输入,然后我根据它执行搜索。用户还可以输入剩余资源作为搜索的一部分,例如员工/getDetail。

我想用//替换/,这样我的服务就不会失败。另请注意,如果用户输入员工///////getDetail//////salary 即使那么它应该返回员工/getDetail/salary

用两个替换和正斜杠的想法,如果用户输入超过 2,那么我们应该只有 2

我可以在 angular ui 本身中转义这些吗?

谢谢, 阿什什

【问题讨论】:

  • 我可能会在 JS 代码本身中处理这个问题。
  • 你会怎么做?
  • 'aa///////bb/////cc/d'.replace(/\/*/g,'//') 不起作用:(跨度>
  • 是的,对不起,我的意思是'aa////////bb/////cc/d'.replace(/\/+/g,'//')。此行应将任何斜线仅转换为双斜线(即,如果多于 2,则将变为仅 2;如果有 1,则将变为 2)
  • @AshishShukla 你的问题已经有 2 个很好的答案了,它们能解决你的问题吗?如果有,请选择一个标记为答案meta.stackexchange.com/questions/5234/…

标签: javascript regex angular typescript


【解决方案1】:

用一个正斜杠替换模式/{2,}。这会消除重复,但不会影响仅(正确)使用了一个正斜杠的实例。

var input = "employee///////getDetail//////salary";
console.log(input.replace(/\/{2,}/g, "/"));

如果你真的想要在替换中 两个 正斜杠,那么使用这个:

input.replace(/\/+/g, "//")

【讨论】:

  • 当输入类似于“emp/get/salary”应该给 emp//get//salary 时,这有效但不会添加额外的 /
  • @AshishShukla 这是一项新要求,与您最初的问题不同。您希望在最终路径中使用 一个 还是 两个 正斜杠?
  • 谢谢。这不是一个新的要求,但在细节中也提到了同样的要求。无论如何欢呼谢谢你:)
【解决方案2】:

您可以创建一个正则表达式来匹配正斜杠,并使用String.prototype.replace 方法将 1 个或多个正斜杠替换为 2 个正斜杠,如下例所示。

var forwardSlash = /\/+/g;
var input = "employee///////getDetail//////salary";
console.log(input.replace(forwardSlash, "//"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 2021-05-29
    • 2012-05-17
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    相关资源
    最近更新 更多