javascript中的replace方法不适用于变量吗?
每当我使用一个实际字符时,它都会工作,但当我用一个变量(nums[2])替换它时,它就不工作了,只返回相同的数组。有什么我遗漏的吗?我会把你的代码缩短一点,这样就不会给你造成太多的混乱 另外,您可以避免使用slice方法,因为默认情况下字符串是不可变的,这意味着每次执行replace方法或任何其他字符串方法时,它都会返回一个全新的字符串javascript中的replace方法不适用于变量吗?,javascript,arrays,methods,replace,Javascript,Arrays,Methods,Replace,每当我使用一个实际字符时,它都会工作,但当我用一个变量(nums[2])替换它时,它就不工作了,只返回相同的数组。有什么我遗漏的吗?我会把你的代码缩短一点,这样就不会给你造成太多的混乱 另外,您可以避免使用slice方法,因为默认情况下字符串是不可变的,这意味着每次执行replace方法或任何其他字符串方法时,它都会返回一个全新的字符串 var nums = [1,2,3,5,6,3]; nums = nums.join('') // I want to replace all occurren
var nums = [1,2,3,5,6,3];
nums = nums.join('')
// I want to replace all occurrences of 3 in nums with an empty string.
// this code works
nums.slice(0).replace(/3/g,''); => [1,2,5,6];
// this code doesn't work, because I replaced 3 with a variable
nums.slice(0).replace(/nums[2]/g, ''); => [1,2,3,5,6,3];
到目前为止棒极了!该方法接受RegExp或字符串作为参数。
例如:numberstring.replace(/3/g,”)
我们使用的是/3/g
RegExp,这意味着查找由于g
标志而出现的所有'3'
,因为有一个'3'
将被替换为repace
中第二个参数中定义的空字符串'
但是/numberstring[2]/g
呢?让我们来看看:
var numbersArray = [1, 2, 3, 5, 6, 3];
var numbersString = numbersArray.join(''); // => '1235653'
var numbersWithoutThrees = numbersString.replace(/3/g, ''); // => '1256'
它似乎没有替换任何东西,这是因为“123563”中没有'numberstring[2]'
字符串
如果要替换第三个元素(numberstring[2]),可以通过在numbersArray
中替换该位置的元素并再次使用join生成新字符串来完成
数字阵列[2]='';//=>[1, 2, "", 5, 6, 3]
numberstring=numbersArray.join(“”);//=>'12563'
结果是,numberstring
变量中没有第三个元素
我希望这有帮助 regex-literal语法不插入变量的值;它类似于字符串文本(而不是字符串模板)。regex
/nums[2]/
表示匹配字符“nums2”。这是否回答了您的问题…尽管事实上你根本不应该在这里使用正则表达式。不要将数组转换为字符串。使用filter
忽略数组中的值。
var result = numbersString.replace(/numbersString[2]/g, ''); // => '123563'