在JavaScript中删除字符串中特定位置的字符

102

有没有一种简单的方法在JavaScript中删除特定位置的字符?

例如,如果我有字符串"Hello World",我能否删除位置3处的字符?

我要得到的结果将是以下内容:

"Helo World"

这个问题不是如何使用JavaScript从字符串中删除一个字符?的重复,因为这个问题是关于删除特定位置的字符,而那个问题是关于删除所有该字符实例。


我做了,但我看得可能不够仔细。 - starbeamrainbowlabs
18
这不是重复问题。这个问题是关于从特定位置移除一个已知字符的,而重复问题则是关于从任意位置移除一个已知字符的。 - Matt
2
@MT0 不是的。这个问题是关于删除特定索引处的字符 - 而那个问题是关于从字符串中删除特定字符的实例。 - starbeamrainbowlabs
@starbeamrainbowlabs 不是,这是一个完全相同的副本;链接的问题是关于删除第四个字符(这恰好也总是一个r)。这里接受的答案与该问题上投票最高的第二个答案相同。 - MT0
8个回答

159

这取决于你是否觉得以下内容容易,它使用简单的字符串方法(在此情况下为slice())。

var str = "Hello World";
str = str.slice(0, 3) + str.slice(4);
console.log(str)


1
谢谢!我知道会有一个简单的解决方案。我没想到那个 :-) - starbeamrainbowlabs
@Zon:没错,这就是我们的想法。当与 + str.slice(4); 结合使用时,你最终会删除字符串 str 中第三个字符(从零开始索引)。str.slice(0, 3) + str.slice(4) // Helo World - Matt
1
只是为了举个例子:str.slice(0, 3) 返回 'Hel'(从第一个到第三个字符);str.slice(4) 返回 'o World'(从第四个字符开始取所有字符);你也可以像这样设置截取边界:str.slice(0, -6) 来获取 'Hello'。 - Zon
函数 removeByIndex(aStr,index) { if(index==aStr.length-1){ return aStr.slice(0,aStr.length-1); } else{ return aStr.slice(0,index)+aStr.slice(index+1); } } function myFunction() { var str = "abc"; var res =removeByIndex(str,2); console.log(res); } - Asutosh

22

你可以试试这个方法:

var str = "Hello World";
var position = 6; // its 1 based
var newStr = str.substring(0, position - 1) + str.substring(position, str.length);
alert(newStr);

这里有一个实时示例:http://jsbin.com/ogagaq


如果位置变量的值为0怎么办?第一个字符不会被删除。 - Georgios Syngouroglou
@GeorgeSiggouroglou 感谢您指出,实际上位置变量是基于1的(我评论了0)。我已经修正了评论。 - Ishan Dhingra

18
将字符串转换为数组,从指定的索引处分割一个字符,再将其转回字符串。
let str = 'Hello World'.split('')

str.splice(3, 1)
str = str.join('')

// str = 'Helo World'.

1
你甚至可以使用[...'Hello world!'].splice(3, 1).join('') - Amin NAIRI
4
很抱歉,它不会起作用。 - Alexandre Daubricourt

9
如果省略特定的索引字符,则使用此方法。
function removeByIndex(str,index) {
      return str.slice(0,index) + str.slice(index+1);
}
    
var str = "Hello world", index=3;
console.log(removeByIndex(str,index));

// Output: "Helo world"

如果索引为0怎么办? - Ali Nouman
@Ali,我收到了问题,谢谢你告诉我。我会更新代码。 - Surendranath Sonawane
我相信这对于索引为1的情况也会失败,而移除的是索引为0的元素。 - Erick A. Montañez
@Erick misteck 更正了,感谢指出。 - Surendranath Sonawane

4
    var str = 'Hello World';
                str = setCharAt(str, 3, '');
                alert(str);

function setCharAt(str, index, chr)
        {
            if (index > str.length - 1) return str;
            return str.substr(0, index) + chr + str.substr(index + 1);
        }

1

您可以使用 substring() 方法。例如:

var x = "Hello world"
var x = x.substring(0, i) + 'h' + x.substring(i+1);

0

你好,starbeamrainbowlabs,

你可以使用以下方法来完成这个任务:

var oldValue = "pic quality, hello" ;
var newValue =  "hello";
var oldValueLength = oldValue.length ;
var newValueLength = newValue.length ;
var from = oldValue.search(newValue) ;
var to = from + newValueLength ;
var nes = oldValue.substr(0,from) + oldValue.substr(to,oldValueLength);
console.log(nes);

我在我的JavaScript控制台中测试过,所以你也可以试试看。谢谢。


-1
var str = 'Hello World',
    i = 3,
    result = str.substr(0, i-1)+str.substring(i);

alert(result);

i 的值不应该小于 1


i是什么?为什么它不应该小于0而是小于1? - starbeamrainbowlabs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接