从字符串中删除一个字母(:)

时间:2011-10-27 19:22:45

标签: javascript jquery

我的表格中有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(“:”)没有帮助......

10 个答案:

答案 0 :(得分:12)

您可以替换所有:个字符:

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';

答案 1 :(得分:5)

在这种情况下,只需使用普通的JavaScript replacesubstr方法。

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

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

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

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

H:我

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

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

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

  

input =':: a:sd:'output =':: a:sd'; input ='hi:'output ='hi'; input ='hi :::'output ='hi'; input ='hi'output ='hi'; input ='h:i'output ='h:i'

答案 2 :(得分:1)

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

答案 3 :(得分:0)

var myStr = "something:";
myStr = myStr.slice(0, -1);

答案 4 :(得分:0)

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

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;
}

答案 5 :(得分:0)

var a="name:";
var b=a.split(":");
alert(b[0]);

答案 6 :(得分:0)

一种方法是使用lastIndexOf

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

DEMO

答案 7 :(得分:0)

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


替换一个实例:

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

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

 function trim(str) {
       str = str.replace(/^:*/,"");
       return str.replace(/:*$/,"");
 }