我有一个字符串,比如Hello world我需要替换索引3处的char。如何通过指定索引替换字符?
var str = "hello world";
我需要这样的东西
str.replaceAt(0,"h");
我有一个字符串,比如Hello world我需要替换索引3处的char。如何通过指定索引替换字符?
var str = "hello world";
我需要这样的东西
str.replaceAt(0,"h");
当前回答
我这样做是为了使字符串正确的大小写,也就是说,第一个字母是大写的,其余的都是小写的:
function toProperCase(someString){
return someString.charAt(0).toUpperCase().concat(someString.toLowerCase().substring(1,someString.length));
};
首先要做的是确保所有的字符串都是小写的- someString.toLowerCase()
然后它将第一个字符转换为大写字符-someString.charAt(0)。
然后它取剩下的字符串减去第一个字符的子字符串-someString.toLowerCase().substring(1,someString.length))
然后它将两者连接起来并返回新的字符串-someString.charAt(0).toUpperCase().concat(someString.toLowerCase().substring(1,someString.length))
可以为替换字符索引和替换字符添加新的参数,然后形成两个子字符串,替换被索引的字符,然后以大致相同的方式连接。
其他回答
这里的方法很复杂。 我会这样做:
var myString = "this is my string";
myString = myString.replace(myString.charAt(number goes here), "insert replacement here");
这很简单。
在Javascript中,字符串是不可变的,所以你必须这样做
var x = "Hello world"
x = x.substring(0, i) + 'h' + x.substring(i+1);
用'h'替换x在i处的字符
这很容易用RegExp实现!
const str = 'Hello RegEx!';
const index = 11;
const replaceWith = 'p';
//'Hello RegEx!'.replace(/^(.{11})(.)/, `$1p`);
str.replace(new RegExp(`^(.{${ index }})(.)`), `$1${ replaceWith }`);
//< "Hello RegExp"
"hello world".replace(/(.{3})./, "$1h")
// 'helho world'
解决方案不工作的负索引,所以我添加了一个补丁。
String.prototype.replaceAt=function(index, character) {
if(index>-1) return this.substr(0, index) + character + this.substr(index+character.length);
else return this.substr(0, this.length+index) + character + this.substr(index+character.length);
}