a=new String("Hello");
a[0]==="H" //true
a[0]="J"
a[0]==="J" //false
a[0]==="H" //true
这是否意味着我只能在.split("")
然后.join("")
使用字符串作为字符数组?
答案:是的,在Javascript strings are readonly
(又名不可变)这个问题的答案如下:
答案 0 :(得分:3)
多数民众赞成。
你当然可以构建一个函数来为你处理这个问题。
有关此的不同示例,请参阅此SO帖子:
How do I replace a character at a particular index in JavaScript?
答案 1 :(得分:3)
字符串是immutable,是的。如果要更改字符串,则应重新分配a
。您还可以使用slice
:a = 'j'+a.slice(1)
或replace
:a = a.replace(/^h/i,'j')
。
您可以创建自定义的可变String
对象,例如this experiment(尤其是方法replaceCharAt
)。
答案 2 :(得分:1)
如果有必要对字符串执行操作,就好像它是一个数组或字符,那么您可能会创建一些原型:
String.prototype.splice = function(start,length,insert) {
var a = this.slice(0, start);
var b = this.slice(start+length, this.length);
if (!insert) {insert = "";};
return new String(a + insert + b);
};
String.prototype.push = function(insert) {
var a = this
return new String(a + insert);
};
String.prototype.pop = function() {
return new String(this.slice(0,this.length-1));
};
String.prototype.concat = function() {
if (arguments.length > 0) {
var string = "";
for (var i=0; i < arguments.length; i++) {
string += arguments[i];
};
return new String(this + string);
};
};
String.prototype.sort = function(funct) {
var arr = [];
var string = "";
for (var i=0; i < this.length; i++) {
arr.push(this[i]);
};
arr.sort(funct);
for (var i=0; i < arr.length; i++) {
string += arr[i];
};
return new String(string);
};
var a = new String("hello");
var b = a.splice(1,1,"b");
var c = a.pop();
var d = a.concat(b,c);
var e = a.sort();
返回你好, hbllo, 地狱,hellohbllohell,ehllo
答案 3 :(得分:0)
Strings原型的.valueOf()方法不会返回其原始值吗? 像,
答案 4 :(得分:0)
基本上javascript中的字符串由两种类型区分,一种是原始的,另一种是对象。字符串对象是字符序列。
您可以使用原始类型的字符串。
var x = "hello";
console.log(x);
output : "hello"
x = "j"+x.substring(1);
console.log(x);
output : "jello";
或使用
var x = new String("hello");
console.log(x.toString());
x = "j"+x.substring(1);