【问题标题】:Remove a letter(:) from a string从字符串中删除一个字母(:)
【发布时间】:2011-10-27 19:22:44
【问题描述】:

我的表中有诸如 Name:、Call:、Phone:....等字符串。我正在学习 jQuery 并且能够访问文本。我的教程使用trim() 删除任何空格。但是我想从每个字符串的末尾删除“:”(是的,它总是在调用trim() 方法之后位于末尾)。那么如何实现呢。

这是我的代码:

<script type="text/javascript">
    $(function ()
    {
        $(':input[type=text], textarea').each
    (
    function ()
    {
        var newText = 'Please enter your ' +
    $(this).parent().prev().text().toLowerCase().trim();
        $(this).attr('value', newText);
    }).one('focus', function ()
    {
        this.value = '', this.className = ''
    }).addClass('Watermark').css('width', '300px');
    });
</script>

trim(":") 没有帮助...

【问题讨论】:

标签: javascript jquery


【解决方案1】:

您可以替换所有: 字符:

var str = '::a:sd:';
str = str.replace(/:/g,''); // str = 'asd';

或者使用方便的rtrim() 函数:

String.prototype.rtrim = function(character) {
    var re = new RegExp(character + '*$', 'g');
    return this.replace(re, '');
};

var str = '::a:sd:';
str = str.rtrim(':'); // str = '::a:sd';

【讨论】:

  • replace 只会替换 : 的第一个实例
  • 这段代码假定最后一个字符总是一个冒号,这可能并不总是正确的。这不会修剪尾随冒号,它会修剪末尾的任何字符。
  • 还是错了。您的 rtrim 函数不接受任何参数,因此使用 ':' 调用它是没有意义的。它所做的只是删除字符串末尾的空格字符(\s),如果有的话。
  • @Shutieh:不,它仍然修剪:,我只是忘了添加一个参数。更新后的代码有效。
  • @Blender:您忘记了参数并在所有情况下都使用了 \s,所以不:它没有“仍然精简:”。不过更新后的代码确实是正确的。
【解决方案2】:

在这种情况下,只需使用普通的旧 JavaScript @987654321@@987654322@ 方法。

您还可以使用正则表达式查找冒号作为最后一个字符(正则表达式字符串结尾 anchor"$" 之前的字符)。

"hi:".replace(/:$/, "")

"hi".replace(/:$/, "")

"h:i".replace(/:$/, "")

h:i

这是 Blender 答案中 rtrim 函数的简化内联版本。

编辑:这是 Blender 更正的 rtrim 函数的测试小提琴。请注意,如果字符串以连续的多个实例结尾(下面的粗体示例),他的 RegExp 将删除指定字符的多次出现。

http://jsfiddle.net/fGrPb/5/

输入 = '::a:sd:' 输出 = '::a:sd';输入=“嗨:”输出=“嗨”; 输入 = 'hi:::' 输出 = 'hi';输入=“嗨”输出=“嗨”;输入 = 'h:i' 输出 = 'h:i'

【讨论】:

    【解决方案3】:

    要截断字符串的最后一个字符,请使用 string.slice(0,-1)

    【讨论】:

      【解决方案4】:

      您可以使用正则表达式删除冒号 (:)。


      替换一个实例:

      var with_colon = 'Stuff:';
      var regex = /([^:]*):/; 
      var without_colon = regex.exec(with_colon)[1];
      alert(without_colon);
      

      结果:Stuff


      替换所有实例:

      var with_colon = 'Stuff: Things:'; 
      var without_colon = with_colon.replace(/([^:]*):/g,'$1'); 
      alert(without_colon);
      

      结果:Stuff Things

      【讨论】:

        【解决方案5】:
        var myStr = "something:";
        myStr = myStr.slice(0, -1);
        

        【讨论】:

          【解决方案6】:
          var a="name:";
          var b=a.split(":");
          alert(b[0]);
          

          【讨论】:

            【解决方案7】:

            一种方法是使用lastIndexOf

            var str='Name:, Call:, Phone:';
            var index=str.lastIndexOf(":");
            alert(index);
            var s=str.substring(0,index);
            alert(s);
            

            DEMO

            【讨论】:

            • 如果最后一个字符不是冒号,这将导致一个奇怪的错误。如果未找到该字符,lastIndexOf 将返回 -1,这可能会导致不必要的字符串截断。
            【解决方案8】:

            这会检查最后一个字符是否是冒号。如果是,则删除最后一个字符。

            if (str[str.length - 1] === ":") {
              str = str.slice(0, -1);
            }
            

            如果可以有多个尾随冒号,您可以将if 替换为while,如下所示:

            while (str[str.length - 1] === ":") {
              str = str.slice(0, -1);
            }
            

            您甚至可以创建一个通用的 trim 函数,该函数接受一个字符串和一个字符并修剪该字符的尾随实例:

            var trim = function(str, chr) {
              while (str[str.length - 1] === ":") {
                str = str.slice(0, -1);
              }
              return str;
            }
            

            【讨论】:

              【解决方案9】:
               function trim(str) {
                     str = str.replace(/^:*/,"");
                     return str.replace(/:*$/,"");
               }
              

              【讨论】:

                【解决方案10】:

                str = str.substring(0,str.lastIndexOf(":"));

                请注意,这会删除从最后一个 : 到字符串末尾的所有内容(例如,: 之后的任何空格)。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-03-20
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2022-01-09
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多