2012-09-21 18 views
5
a=new String("Hello"); 

String("Hello")जावास्क्रिप्ट स्ट्रिंग ऑब्जेक्ट केवल पढ़ने के लिए?

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

इसका मतलब मैं केवल चार के .split("") द्वारा की सरणियों के रूप में तार का उपयोग कर सकते हैं और फिर .join("") करता है?


उत्तर: हाँ, में Javascript strings are readonly (उर्फ अपरिवर्तनीय) इस सवाल पर जवाब यहां है:

+0

, का उपयोग करें कि नया स्ट्रिंग ("हैलो") लगभग बराबर करने के लिए सिर्फ "हैलो" है। इसमें कोई अतिरिक्त सरणी विधियां नहीं हैं, और केवल उन्हीं तरीकों से ही छेड़छाड़ की जा सकती है। http://www.w3schools.com/jsref/jsref_obj_string।एएसपी –

+0

@PlacidCow यह अलग-अलग अक्षरों को प्राप्त करने के लिए [] है] – TiansHUo

उत्तर

3

स्ट्रिंग्स immutable हैं, तो हाँ। यदि आप स्ट्रिंग को बदलना चाहते हैं तो a को पुन: असाइन किया जाना चाहिए। आप slice: a = 'j'+a.slice(1), या replace: a = a.replace(/^h/i,'j') का भी उपयोग कर सकते हैं।

आप एक कस्टम म्यूटेबल String ऑब्जेक्ट बना सकते हैं, this experiment (esp। विधि replaceCharAt देखें)।

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

+0

विस्तृत उत्तर के लिए धन्यवाद, लेकिन मैं पूछ रहा था कि जावास्क्रिप्ट तारों को केवल पढ़ने के लिए किया गया था, आपके सभी उत्तर पुरानी जगह को बदलने के लिए एक नई स्ट्रिंग का उपयोग कर रहे हैं। – TiansHUo

0

स्ट्रिंग्स प्रोटोटाइप की .valueOf() विधि अपने आदिम मूल्य को वापस नहीं करेगा? की तरह,

enter image description here

+0

ठीक है शायद मैं सवाल गलत समझा, सूखी – C5H8NNaO4

0

मूल रूप से जावास्क्रिप्ट में स्ट्रिंग एक आदिम है और एक अन्य वस्तु है दो प्रकार के द्वारा विभेदित होते हैं। स्ट्रिंग ऑब्जेक्ट्स चरित्र अनुक्रम हैं।

आप प्राचीन प्रकार की स्ट्रिंग का उपयोग कर सकते हैं।

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); 
सभी गहन प्रयोजनों के लिए

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^