6
a=new String("Hello");

细绳(

a[0]==="H" //true
a[0]="J"
a[0]==="J" //false
a[0]==="H" //true

这是否意味着我只能在.split("")then之前将字符串用作 char 数组.join("")


答案:是的,在Javascript strings are readonly(又名不可变)这个问题在这里得到回答:

4

5 回答 5

3

那是正确的。

您当然可以构建一个函数来为您处理这个问题。

有关不同示例,请参阅此 SO Post:

如何在 JavaScript 中替换特定索引处的字符?

于 2012-09-21T09:51:13.113 回答
3

字符串是不可变的,所以是的。a如果要更改字符串,则应重新分配。您也可以使用slice:a = 'j'+a.slice(1)replace: a = a.replace(/^h/i,'j')

你可以创建一个自定义的可变String对象,就像这个实验一样(特别是见方法replaceCharAt)。

于 2012-09-21T09:53:39.693 回答
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

于 2012-09-21T10:08:26.923 回答
0

Strings 原型的 .valueOf() 方法不会返回其原始值吗?像,

在此处输入图像描述

于 2012-09-21T10:15:51.880 回答
0

基本上,javascript中的字符串由两种类型区分,一种是原始的,另一种是对象的。字符串对象是字符序列。

您可以使用原始类型的 string 。

   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);
于 2012-09-21T10:17:12.163 回答