【问题标题】:Javascript: Remove last character if a colonJavascript:如果冒号则删除最后一个字符
【发布时间】:2012-08-28 05:59:23
【问题描述】:

Javascript 的相对新手,正在寻找一种方法来删除字符串的最后一个字符(如果它是冒号)。

我知道myString = myString.replace('/^\\:/'); 可以用于行首,但不知道如何换入$ 字符以更改为行尾……有人可以纠正吗?

谢谢

【问题讨论】:

    标签: javascript string replace


    【解决方案1】:

    简单地尝试

    myString = myString.replace(/:$/, '');
    

    这将删除位于字符串末尾的:

    【讨论】:

    • 我需要在我的字符串输入末尾删除任意数量的换行符。您的示例是一个坚实的起点。然后我用regexr来测试和提炼。最后我想出了 /(\n$)+/gm ,它似乎工作得很好。感谢您提供简单有效的答案。
    • @Mentalist,应该是/\n+$/:量词应该跟在换行符后面,而不是结束分隔符
    【解决方案2】:

    正则表达式文字 (/.../) 不应位于字符串中。更正您的代码以删除字符串开头的冒号,您会得到:

    myString = myString.replace(/^\:/, '');
    

    要匹配字符串末尾的冒号,请将$ 放在冒号之后而不是^ 之前:

    myString = myString.replace(/\:$/, '');
    

    你也可以使用纯字符串操作:

    if (myString.charAt(myString.length - 1) == ':') {
      myString = myString.substr(0, myString.length - 1);
    }
    

    【讨论】:

    • 感谢您的详细解答。作为一个新手,我了解使用反斜杠作为转义字符,但为什么replace 语句中有许多正斜杠/反斜杠?
    • @neilf:斜杠/.../ 是正则表达式文字。在正则表达式内部有一个反斜杠来转义冒号字符,因此它被解释为文字字符并且在表达式中没有特殊含义。 (我更正了上面的代码,它有双反斜杠用于转义模式以将其放入字符串中,即new Regex('^\\:'),您的原始代码是正则表达式文字和正则表达式字符串之间的某种混合。)
    • 我不知道 /.../ 格式,只有反斜杠 - 感谢您的解释。
    • 谢谢 Guffa,你太棒了!我使用您的正则表达式答案轻松地操纵了 URL 中的其他字符。
    【解决方案3】:

    $ 需要位于正则表达式的末尾以匹配 EOL。

    /:$/

    【讨论】:

      猜你喜欢
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-29
      • 1970-01-01
      相关资源
      最近更新 更多