【问题标题】:replacing spaces in a string with hyphens用连字符替换字符串中的空格
【发布时间】:2012-05-22 16:12:42
【问题描述】:

我有一个字符串,我需要修复它以便将它附加到查询中。

假设我有字符串“A Basket For Every Occasion”,我希望它是“A-Basket-For-Every-Occasion”

我需要找到一个空格并用连字符替换它。然后,我需要检查字符串中是否还有其他空格。如果不是,则返回固定字符串。如果是这样,请再次运行相同的过程。

对我来说听起来像是一个递归函数,但我不知道如何设置它。任何帮助将不胜感激。

【问题讨论】:

    标签: javascript recursion indexof


    【解决方案1】:

    您可以像这样使用正则表达式替换:

    var str = "A Basket For Every Occasion";
    str = str.replace(/\s/g, "-");
    

    正则表达式中的“g”标志将导致所有空格被替换。


    您可能希望将多个空格合并为一个连字符,这样您就不会在一行中出现多个破折号。看起来像这样:

    var str = "A Basket For Every Occasion";
    str = str.replace(/\s+/g, "-");
    

    【讨论】:

    • @Tamil - 我不明白你的评论。 OP 显然不知道全局正则表达式替换,所以我正在对他们进行教育并向他们展示它是如何工作的,这完全符合 SO 的精神,并有利于未来的观众)。此外,我提供了一个改进想法,可以防止连续出现多个破折号。您认为这个问题应该如何回答?
    • @jfriend00 很抱歉,如果我提出了错误,但您可以问他到目前为止是否在同一个 OP 上尝试过任何东西。否则,他会在下一刻想到一个问题而不是试图解决它。
    • @Tamil - 我理解这一点,但在这种情况下,很明显 OP 只能考虑一次替换一个空格的递归函数(这就是他们想要尝试的),但 OP 认为必须有更好的可用的东西,所以正在征求意见。从这个意义上说,这对我来说似乎是一个公平的问题。
    【解决方案2】:

    全局使用替换和查找空格\s(标志g)

    var a = "asd asd sad".replace(/\s/g,"-");
    

    a变成了

    "asd-asd-sad"
    

    【讨论】:

      【解决方案3】:

      试试

      value = value.split(' ').join('-');
      

      我用它来摆脱我的空间。我没有使用连字符,而是将其设为空并且效果很好。也是所有的JS。 .split(limiter) 将删除限制器并将字符串片段放入数组中(没有限制器元素),然后您可以使用连字符连接数组。

      【讨论】:

        猜你喜欢
        • 2013-05-09
        • 1970-01-01
        • 2020-12-19
        • 2013-03-31
        • 1970-01-01
        • 2018-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多