2011-02-14 132 views
49

从字符串中删除号码从字符串中删除数字?

questionText = "1 ding ?" 

我想取代这个数字和题号,数量可以是任意的号码,我试过下面的代码那不是工作

questionText.replace(/[0-9]/g, ''); 
+2

什么是不工作?因为它是删除号码... – 2011-02-14 15:13:41

+0

你还需要删除小数点吗? – glowworms 2011-02-14 16:19:45

+1

@Berbi此问题不重复。引用的“替换方法不起作用”没有正确的标题,因此用户可以键入并搜索“从字符串中删除数字”。糟糕的适度。 – 2014-12-12 14:54:58

回答

99

非常接近,请尝试:

questionText = questionText.replace(/[0-9]/g, ''); 

replace对现有字符串不起作用,它会返回一个新字符串。如果你想使用它,你需要保留它!
同样,你可以使用一个新的变量:

var withNoDigits = questionText.replace(/[0-9]/g, ''); 

最后一招一次删除的数字整块,而是一个可能走得太远:

questionText = questionText.replace(/\d+/g, ''); 
8

你非常接近。

这里是你的问题写的代码:

questionText.replace(/[0-9]/g, ''); 

你写的确实看questionText变量,并产生输出是原始字符串,而是用数字与替换为空的代码串。

但是,它不会自动将其分配回原始变量。您需要指定什么将其分配到:

questionText = questionText.replace(/[0-9]/g, ''); 
9

字符串是immutable,这就是为什么questionText.replace(/[0-9]/g, '');在它自己的确实工作,但它不会改变questionText串。您必须将替换结果分配给另一个String变量或再次分配给questionText。

var cleanedQuestionText = questionText.replace(/[0-9]/g, ''); 

或1个去(使用\d+,看到了Kobi的答案):

questionText = ("1 ding ?").replace(/\d+/g,''); 

,如果你想在你在它修剪领先(和尾)空间(S):

questionText = ("1 ding ?").replace(/\d+|^\s+|\s+$/g,''); 
1

只是想添加,因为它可能是有兴趣的人,你可以以另一种方式思考问题。我不确定这里是否有兴趣,但我认为它是相关的。

我的意思的另一种方式是说“剥夺什么,不就是我寻找的,也就是说,如果你只希望‘丁’,你可以说:

VAR strippedText =(” 1 ding?“)。replace(/ [^ a-zA-Z]/g,'');

基本上意思是”删除任何一个是a,b,c,d .... Z信)。