मैं जावास्क्रिप्ट में किसी विशेष सूचकांक में एक चरित्र को कैसे बदलूं?


544

मेरे पास एक स्ट्रिंग है, चलो कहते हैं Hello worldऔर मुझे सूचकांक पर चार को बदलने की आवश्यकता है। 3. मैं सूचकांक को निर्दिष्ट करके एक चार्ट को कैसे बदल सकता हूं?

var str = "hello world";

मुझे कुछ ऐसा चाहिए

str.replaceAt(0,"h");

131
क्या अजीब है कि str[0] = 'x'कोई भी त्रुटि नहीं लगती है, फिर भी वांछित प्रभाव नहीं है!
माइकल

6
@ मिचेल के साथ आप 0 पर सूचकांक प्राप्त करेंगे, इसे 'x' पर सेट करेंगे, यह कथन स्वयं नया मान लौटाएगा; 'एक्स'। लेकिन यह सब मूल को नहीं बदलता है, इसलिए यह पूरी तरह से वैध है, बस वही नहीं जिसकी आपको उम्मीद थी। इसका संदर्भ नहीं
पॉल स्चेल्टेमा

8
@Michael यह "use strict"सक्रिय होने पर करता है: Uncaught TypeError: Cannot assign to read only property '0' of string 'hello world'(कम से कम वेबकिट ब्राउजर्स में)
Jan Turohael

1
जावास्क्रिप्ट तार अपरिवर्तनीय हैं, उन्हें "स्थान पर" संशोधित नहीं किया जा सकता है, इसलिए आप किसी एकल वर्ण को संशोधित नहीं कर सकते। वास्तव में एक ही तार की प्रत्येक घटना एक वस्तु है।
मार्टिज़न शेफ़र

ठीक है, उत्तर देखें: D
मार्टिज़न शेफ़र

जवाबों:


611

जावास्क्रिप्ट में, तार अपरिवर्तनीय हैं , जिसका अर्थ है कि आप जो सबसे अच्छा कर सकते हैं वह है कि परिवर्तित सामग्री के साथ एक नया स्ट्रिंग बनाना और इसे इंगित करने के लिए चर असाइन करना।

आपको replaceAt()फ़ंक्शन को स्वयं परिभाषित करना होगा :

String.prototype.replaceAt = function(index, replacement) {
    return this.substr(0, index) + replacement + this.substr(index + replacement.length);
}

और इसे इस तरह से उपयोग करें:

var hello = "Hello World";
alert(hello.replaceAt(2, "!!")); // Should display He!!o World

101
ध्यान दें कि आमतौर पर बेस जावास्क्रिप्ट क्लासेस का विस्तार करना अच्छा विचार नहीं है। इसके बजाय एक सादे उपयोगिता फ़ंक्शन का उपयोग करें।
एटलेस गोरल

86
मुझे पूछना चाहिए क्यों? इस उद्देश्य के लिए प्रोटोटाइप समर्थन है।
Cem Kalyoncu

30
@CemKalyoncu: यह अन्य पुस्तकालयों के साथ कोड को खराब बना सकता है। लेकिन मैं कभी भी खुद से नहीं काटा गया।
एलेक्स

6
@alex: आप इसके बारे में सही हैं, आपको वास्तव में यह जांचने की आवश्यकता है कि क्या यह कार्य करने से पहले मौजूद है। लेकिन फिर भी अगर ऐसा होता है, तो इसे ठीक उसी ऑपरेशन को करना चाहिए।
Cem Kalyoncu

80
मैं असहमत हूं, भले ही आप यह पता लगा लें कि क्या फ़ंक्शन मौजूद है बाद में लाइब्रेरी अभी भी एक समान फ़ंक्शन का उपयोग / निर्माण कर सकती है - 2 बुरे विचार एक बुरा बना रहे हैं। सामान्य तौर पर, बस अन्य लोगों के कोड (कोर सिस्टम को शामिल करें) के साथ कभी भी न खेलें। एक नया फ़ंक्शन बनाएँ।
1

93

replaceAtजावास्क्रिप्ट में कोई फ़ंक्शन नहीं है । आप किसी भी वर्ण को किसी भी स्ट्रिंग को निर्दिष्ट स्थिति में बदलने के लिए निम्न कोड का उपयोग कर सकते हैं:

function rep() {
    var str = 'Hello World';
    str = setCharAt(str,4,'a');
    alert(str);
}

function setCharAt(str,index,chr) {
    if(index > str.length-1) return str;
    return str.substr(0,index) + chr + str.substr(index+1);
}
<button onclick="rep();">click</button>



मैं इस समाधान को प्राथमिकता देता हूं क्योंकि आप इसके साथ एक एकल वर्ण को प्रतिस्थापित कर सकते हैं। यदि आपके पास केवल एक वर्ण बदलने के लिए समाधान सबसे अधिक upvotes है, तो यह काम नहीं करता है। यह केवल तब काम करता है जब दो वर्णों को प्रतिस्थापित किया जाता है! इसके अलावा, पदार्थ को प्रतिस्थापन के साथ प्रतिस्थापित किया जाना चाहिए जैसा कि कई अन्य टिप्पणियों में उल्लेख किया गया है।
गिग्नु

74

आप नहीं कर सकते। स्थिति से पहले और बाद में पात्रों को एक नए स्ट्रिंग में ले जाएं:

var s = "Hello world";
var index = 3;
s = s.substring(0, index) + 'x' + s.substring(index + 1);

वास्तव में, हाँ, आप कर सकते हैं, लेकिन यह एक ओवरकिल होगा। आप पहले इंडेक्स को छोड़ने के लिए एक रेगुलर एक्सप्रेशन सेट कर सकते हैं - 1 कैरेक्टर और इंडेक्स पर कैरेक्टर का मिलान करें। आप सीधे, इन-प्लेस प्रतिस्थापन करने के लिए उस नियमित अभिव्यक्ति के साथ String.replace का उपयोग कर सकते हैं। लेकिन यह एक ओवरकिल है। तो, व्यवहार में आप नहीं कर सकते। लेकिन सिद्धांत रूप में, आप कर सकते हैं।
एतस गोरल

12
@ ऐट्स: रिप्लेस फंक्शन इन-प्लेस रिप्लेसमेंट नहीं करता है, यह एक नया स्ट्रिंग बनाता है और इसे लौटाता है।
गुफ़ा

2
MDN उपयोग करने के लिए पता चलता है String.prototype.substringके ऊपर String.prototype.substr
मिकेमाइक

33

यहाँ बहुत सारे उत्तर हैं, और ये सभी दो तरीकों पर आधारित हैं:

  • METHOD1: दो सब्सट्रिंग्स का उपयोग करके स्ट्रिंग को विभाजित करें और उनके बीच के चरित्र को सामान करें
  • METHOD2: स्ट्रिंग को कैरेक्टर ऐरे में कन्वर्ट करें, एक ऐरे मेंबर को बदलें और उसमें शामिल हों

व्यक्तिगत रूप से, मैं इन दो तरीकों का उपयोग विभिन्न मामलों में करूंगा। मुझे समझाने दो।

@ फैबियोफम्स: आपकी विधि वह थी जिसका मैंने शुरू में उपयोग किया था और मुझे डर था कि यह बहुत सारे पात्रों के साथ स्ट्रिंग पर खराब है। हालांकि, सवाल यह है कि बहुत सारे चरित्र क्या हैं? मैंने इसे 10 "लोरेम इप्सम" पैराग्राफ पर परीक्षण किया और इसमें कुछ मिलीसेकंड लगे। फिर मैंने इसे 10 गुना बड़े स्ट्रिंग पर परीक्षण किया - वास्तव में कोई बड़ा अंतर नहीं था। हम्म।

@vsync, @Cory Mawhorter: आपकी टिप्पणियां असंदिग्ध हैं; हालांकि, फिर से, एक बड़ी स्ट्रिंग क्या है? मैं मानता हूं कि 32 के लिए ... 100kb का प्रदर्शन बेहतर होना चाहिए और चरित्र प्रतिस्थापन के इस एक ऑपरेशन के लिए सब-वेरिएंट का उपयोग करना चाहिए।

लेकिन क्या होगा अगर मुझे काफी कुछ प्रतिस्थापन करना पड़े?

मुझे यह साबित करने के लिए अपने स्वयं के परीक्षण करने की आवश्यकता थी कि उस मामले में क्या तेज है। मान लीजिए कि हमारे पास एक एल्गोरिथ्म है जो अपेक्षाकृत कम स्ट्रिंग को हेरफेर करेगा जिसमें 1000 वर्ण शामिल हैं। हम उम्मीद करते हैं कि औसत में उस स्ट्रिंग के प्रत्येक चरित्र को ~ 100 बार बदल दिया जाएगा। तो, कोड कुछ इस तरह का परीक्षण करने के लिए है:

var str = "... {A LARGE STRING HERE} ...";

for(var i=0; i<100000; i++)
{
  var n = '' + Math.floor(Math.random() * 10);
  var p = Math.floor(Math.random() * 1000);
  // replace character *n* on position *p*
}

मैंने इसके लिए एक पहेली बनाई, और यह यहाँ है । दो परीक्षण, TEST1 (विकल्प) और TEST2 (सरणी रूपांतरण) हैं।

परिणाम:

  • TEST1: 195ms
  • TEST2: 6ms

ऐसा लगता है कि सरणी रूपांतरण परिमाण के 2 आदेशों द्वारा प्रतिस्थापित होता है! तो - यहाँ क्या हुआ ???

वास्तव में ऐसा होता है कि TEST2 में सभी ऑपरेशन सरणी पर ही किए जाते हैं, जैसे असाइनमेंट एक्सप्रेशन strarr2[p] = n। असाइनमेंट वास्तव में एक बड़े स्ट्रिंग पर प्रतिस्थापित करने की तुलना में तेज है, और यह स्पष्ट है कि यह जीतने वाला है।

तो, यह काम के लिए सही उपकरण चुनने के बारे में है। फिर।


7
अपने परीक्षण को jsperf में स्थानांतरित कर दिया, काफी भिन्न परिणामों के साथ: jsperf.com/string-replace-character । यह सब काम के लिए सही उपकरण चुनने के बारे में है;)
कोलीन

1
@ कोल्लिन: मैं बिल्कुल सहमत हूं। इसलिए मैंने लगभग शाब्दिक रूप से jsfiddle से jsperf के परीक्षणों का क्लोन तैयार किया। हालांकि, सही उपकरण का उपयोग करने से अलग, आपको इसे सही तरीके से करना होगा। समस्या पर ध्यान दें, हम बात कर रहे हैं कि क्या होगा अगर हमें एक एल्गोरिथ्म में काफी कुछ प्रतिस्थापन करना होगा। ठोस उदाहरण में 10000 प्रतिस्थापन शामिल हैं। इसका मतलब है कि एक परीक्षण में 10000 प्रतिस्थापन शामिल होने चाहिए। तो, jsperf का उपयोग करते हुए, मुझे काफी सुसंगत परिणाम मिले, देखें: jsperf.com/…
OzrenTkalcecKrznaric

1
यही कारण है कि मुझे जावास्क्रिप्ट पसंद नहीं है। इस तरह के लगातार, सहज, स्पष्ट उपयोग के मामलों के लिए प्रावधान नहीं किए गए हैं। आपको लगता है कि यह जावास्क्रिप्ट के लेखकों के लिए होगा जो लोग स्ट्रिंग के भीतर वर्णों को स्थानापन्न करना चाहते हैं, और वे भाषा में सुविधा विधियों में डालने का फैसला करेंगे।
एहनबिजद

1
@ कोल्लिन ने ओज़्रेनटक्लेस्कक्रज़र्निक के लिए कुछ अलग किया। OzrenTkalcecKrznaric ने धारणा बनाई कि स्ट्रिंग स्थिर है और रनों से पहले विभाजन को अनुकूलित किया जा सकता है। जो जरूरी नहीं कि सच हो। यदि आपको हर रन पर विभाजन करना है तो सबस्ट्रिंग अप्रोच छोटे स्ट्रिंग्स पर लगभग 4 गुना तेज है, और स्ट्रिंग जितनी बड़ी हो जाती है उतनी ही तेजी से। मेरी राय में, यह सबसे अधिक उपयोग के मामलों के लिए बेहतर कार्यान्वयन को प्रतिस्थापित करता है, एक बड़ी स्थैतिक स्ट्रिंग पर बड़ी संख्या में परिवर्तन को रोक देता है।
WiR3D

3
समस्या यह है कि टेस्ट 2 में विभाजन और जुड़ाव लूप के लिए होता है, जहाँ आप एक सिंगल रिप्लेसमेंट की तुलना एक से अधिक (अनुचित) के साथ करते हैं, पहला तरीका सिंगल रिप्लेसमेंट के लिए तेज़ है और दूसरा जंजीर प्रतिस्थापन के लिए एक के बाद एक बेहतर है
τίδηςιλος υουρα

32

वैक्टर के साथ काम आमतौर पर स्ट्रिंग से संपर्क करने के लिए सबसे प्रभावी होता है।

मैं निम्नलिखित कार्य का सुझाव देता हूं:

String.prototype.replaceAt=function(index, char) {
    var a = this.split("");
    a[index] = char;
    return a.join("");
}

इस स्निपेट को चलाएं:

String.prototype.replaceAt=function(index, char) {
    var a = this.split("");
    a[index] = char;
    return a.join("");
}

var str = "hello world";
str = str.replaceAt(3, "#");

document.write(str);


9
यह बड़े तारों के लिए खराब है, कोशिकाओं की पागल राशि के साथ एक ऐरे बनाने की जरूरत नहीं है अगर आप इसे काटने के लिए बस रूट का उपयोग कर सकते हैं ...
vsync

1
उपयोगी यदि आपको बहुत सारे पात्रों को बदलने की आवश्यकता है, और यह सरल है।
शीप

6
मैंने jsperf पर एक परीक्षण बनाया: jsperf.com/replace-character-by-index - Substr तेज़ तरीका है, और 32bytes से 100kb तक सुसंगत है। मैंने इसे उकेरा और जितना मुझे यह कहने के लिए दर्द होता है, भले ही यह अच्छा लगता है, किसी भी आकार के तारों के लिए बेहतर विकल्प है।
Cory Mawhorter

यह काफी अडिग है।
राडको दिनेव

यह एक अच्छा त्वरित समाधान है यदि आप जानते हैं कि आप छोटे तारों का उपयोग करने जा रहे हैं। यदि आप प्रोटोटाइप का विस्तार करने के साथ ठीक हैं, तो आप 2 लाइनों में समान व्यवहार प्राप्त कर सकते हैं:Array.prototype.replace = function(index, val) { this[index] = val; return this; }; 'word'.split('').replace(1, '0').join(''); // returns 'w0rd'
माइकल प्लात्ज़

29

जावास्क्रिप्ट में तार अपरिवर्तनीय हैं, इसलिए आपको कुछ करना होगा

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

I को 'h' से x में वर्ण बदलने के लिए


28
str = str.split('');
str[3] = 'h';
str = str.join('');

4
स्पष्ट और सरल, लेकिन वर्तमान में इमोजी के साथ काम नहीं करेगा (जैसे कि using) का उपयोग करते समय splitऔरjoin
ग्रीन

1
Es6 के साथ मुझे लगता है कि Array.from (str) अब एक बेहतर विकल्प हो सकता है, लेकिन मैं उस ज्ञान के साथ यहां आया और कुछ सीखा जैसा कि आप से संक्षिप्त है इसलिए धन्यवाद!
डेविड कामेर

7

कॉलबैक के साथ String.replace का उपयोग करके एक-लाइनर (कोई इमोजी समर्थन नहीं):

// 0 - index to replace, 'f' - replacement string
'dog'.replace(/./g, (c, i) => i == 0? 'f': c)
// "fog"

व्याख्या की:

//String.replace will call the callback on each pattern match
//in this case - each character
'dog'.replace(/./g, function (character, index) {
   if (index == 0) //we want to replace the first character
     return 'f'
   return character //leaving other characters the same
})

6

यह विधि छोटी लंबाई के तारों के लिए अच्छी है लेकिन बड़े पाठ के लिए धीमी हो सकती है।

var x = "White Dog";
var arr = x.split(""); // ["W", "h", "i", "t", "e", " ", "D", "o", "g"]
arr.splice(6, 1, 'F');
var result = arr.join(""); // "White Fog"

/* 
  Here 6 is starting index and 1 is no. of array elements to remove and 
  final argument 'F' is the new character to be inserted. 
*/

3

@CemKalyoncu: महान जवाब के लिए धन्यवाद!

मैंने इसे थोड़ा और अधिक अनुकूलित करने के लिए इसे Array.splice विधि की तरह बनाया (और @ नोट को ध्यान में रखा):

spliceString=function(string, index, numToDelete, char) {
      return string.substr(0, index) + char + string.substr(index+numToDelete);
   }

var myString="hello world!";
spliceString(myString,myString.lastIndexOf('l'),2,'mhole'); // "hello wormhole!"

निश्चित नहीं है कि यह मतदान क्यों किया गया। इसका कानूनी जवाब है। यह संकेत के अनुसार काम करता है। और यह Array.spliceप्रकार की कार्यक्षमता के अनुरूप है ।
स्कर्मोथि

3

यह इस तरह काम करता है Array.splice:

String.prototype.splice = function (i, j, str) {
    return this.substr(0, i) + str + this.substr(j, this.length);
};

3

तुम कोशिश कर सकते हो

var strArr = str.split("");

strArr[0] = 'h';

str = strArr.join("");

2

यदि आप स्ट्रिंग में वर्णों को प्रतिस्थापित करना चाहते हैं, तो आपको उत्परिवर्ती स्ट्रिंग्स बनाना चाहिए। ये अनिवार्य रूप से चरित्र सरणियाँ हैं। आप एक कारखाना बना सकते हैं:

  function MutableString(str) {
    var result = str.split("");
    result.toString = function() {
      return this.join("");
    }
    return result;
  }

तब आप वर्णों तक पहुंच सकते हैं और स्ट्रिंग के रूप में उपयोग किए जाने पर संपूर्ण सरणी स्ट्रिंग में परिवर्तित हो जाती है:

  var x = MutableString("Hello");
  x[0] = "B"; // yes, we can alter the character
  x.push("!"); // good performance: no new string is created
  var y = "Hi, "+x; // converted to string: "Hi, Bello!"

2

अफानासी कुराकिन के जवाब को सामान्य करते हुए, हमारे पास है:

function replaceAt(str, index, ch) {
    return str.replace(/./g, (c, i) => i == index ? ch : c)
}

let str = 'Hello World'
str = replaceAt(str, 1, 'u')
console.log(str) // Hullo World

आइए नियमित अभिव्यक्ति और प्रतिकृति फ़ंक्शन दोनों का विस्तार करें और समझाएं:

function replaceAt(str, index, newChar) {
    function replacer(origChar, strIndex) {
        if (strIndex === index)
            return newChar
        else
            return origChar
    }
    return str.replace(/./g, replacer)
}

let str = 'Hello World'
str = replaceAt(str, 1, 'u')
console.log(str) // Hullo World

नियमित अभिव्यक्ति .बिल्कुल एक चरित्र से मेल खाती है। gयह पाश के लिए एक में हर चरित्र से मेल खाते हैं बनाता है। replacerसमारोह दोनों मूल चरित्र और जहां कि चरित्र स्ट्रिंग में है के सूचकांक को देखते हुए कहा जाता है। हम यह ifनिर्धारित करने के लिए एक साधारण कथन बनाते हैं कि क्या हम origCharया तो लौटने वाले हैं या newChar


2

आप इनसेट विधि को शामिल करने के लिए स्ट्रिंग प्रकार का विस्तार कर सकते हैं:

String.prototype.append = function (index,value) {
  return this.slice(0,index) + value + this.slice(index);
};

var s = "New string";
alert(s.append(4,"complete "));

तब आप फ़ंक्शन को कॉल कर सकते हैं:


1

मैंने एक फ़ंक्शन किया जो आपके द्वारा पूछे जाने पर कुछ ऐसा ही करता है, यह जांचता है कि क्या स्ट्रिंग में एक चरित्र अनुमत वर्णों की एक सरणी में है यदि यह इसे '' के साथ बदलता है।

    var validate = function(value){
        var notAllowed = [";","_",">","<","'","%","$","&","/","|",":","=","*"];
        for(var i=0; i<value.length; i++){
            if(notAllowed.indexOf(value.charAt(i)) > -1){
               value = value.replace(value.charAt(i), "");
               value = validate(value);
            }
       }
      return value;
   }

1

यह आसानी से 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"

1

यहाँ एक संस्करण है जो आप के साथ आया हूँ अगर आप प्रतिक्रिया या जावास्क्रिप्ट में उनके सूचकांक में शब्दों या अलग-अलग पात्रों को स्टाइल करना चाहते हैं।

replaceAt( yourArrayOfIndexes, yourString/orArrayOfStrings ) 

काम करने का उदाहरण: https://codesandbox.io/s/ov7zxp9mjq

function replaceAt(indexArray, [...string]) {
    const replaceValue = i => string[i] = <b>{string[i]}</b>;
    indexArray.forEach(replaceValue);
    return string;
}

और यहाँ एक और वैकल्पिक विधि है

function replaceAt(indexArray, [...string]) {
    const startTag = '<b>';
    const endTag = '</b>';
    const tagLetter = i => string.splice(i, 1, startTag + string[i] + endTag);
    indexArray.forEach(tagLetter);
    return string.join('');
}

और दुसरी...

function replaceAt(indexArray, [...string]) {
    for (let i = 0; i < indexArray.length; i++) {
        string = Object.assign(string, {
          [indexArray[i]]: <b>{string[indexArray[i]]}</b>
        });
    }
    return string;
}

0

मुझे पता है कि यह पुराना है लेकिन समाधान नकारात्मक सूचकांक के लिए काम नहीं करता है इसलिए मैं इसमें एक पैच जोड़ता हूं। आशा है कि यह किसी की मदद करता है

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);

}

0

कहते हैं कि आप Kthइंडेक्स (0-आधारित इंडेक्स) को बदलना चाहते हैं 'Z'। आप ऐसा करने के Regexलिए उपयोग कर सकते हैं ।

var re = var re = new RegExp("((.){" + K + "})((.){1})")
str.replace(re, "$1A$`");

किसी भी विचार क्यों यह टैग उपयोगी नहीं है?
ksp

अगर यह regex काम करता है, तो मैंने जाँच नहीं की है, लेकिन शायद इसे डाउनवोट किया गया है क्योंकि यह एक स्टेट स्ट्रिंग (रेगुलर एक्सप्रेशन) को संकलित करने की तुलना में शायद एक नया स्ट्रिंग बनाने के लिए बहुत तेज़ है, जो बहुत महंगा है।
फेलो विल्चर्स

0

आप स्ट्रिंग के किसी विशेष स्थान पर Characterया बदलने के लिए निम्न फ़ंक्शन का उपयोग कर सकते हैं String। निम्नलिखित सभी मैच मामलों को बदलने के लिए String.prototype.replaceAllMatches()फ़ंक्शन का उपयोग करें।

String.prototype.replaceMatch = function(matchkey, replaceStr, matchIndex) {
    var retStr = this, repeatedIndex = 0;
    for (var x = 0; (matchkey != null) && (retStr.indexOf(matchkey) > -1); x++) {
        if (repeatedIndex == 0 && x == 0) {
            repeatedIndex = retStr.indexOf(matchkey);
        } else { // matchIndex > 0
            repeatedIndex = retStr.indexOf(matchkey, repeatedIndex + 1);
        }
        if (x == matchIndex) {
            retStr = retStr.substring(0, repeatedIndex) + replaceStr + retStr.substring(repeatedIndex + (matchkey.length));
            matchkey = null; // To break the loop.
        }
    }
    return retStr;
};

परीक्षा:

var str = "yash yas $dfdas.**";

console.log('Index Matched replace : ', str.replaceMatch('as', '*', 2) );
console.log('Index Matched replace : ', str.replaceMatch('y', '~', 1) );

आउटपुट:

Index Matched replace :  yash yas $dfd*.**
Index Matched replace :  yash ~as $dfdas.**

-1

यहाँ मेरा समाधान टर्नरी और मैप ऑपरेटर का उपयोग कर रहा है। यदि आप मुझसे पूछें तो समझने में अधिक पठनीय, सुगम अंत है।

यह es6 और सर्वोत्तम प्रथाओं में अधिक है।

function replaceAt() {
  const replaceAt = document.getElementById('replaceAt').value;

  const str = 'ThisIsATestStringToReplaceCharAtSomePosition';
  const newStr = Array.from(str).map((character, charIndex) => charIndex === (replaceAt - 1) ? '' : character).join('');

  console.log(`New string: ${newStr}`);
}
<input type="number" id="replaceAt" min="1" max="44" oninput="replaceAt()"/>


-3

यहां के तरीके जटिल हैं। मैं इसे इस तरह से करूंगा:

var myString = "this is my string";
myString = myString.replace(myString.charAt(number goes here), "insert replacement here");

यह उतना ही सरल है जितना कि यह मिलता है।


6
वास्तव में ऐसा नहीं है। वास्तव में यह चरित्र की पहली घटना को प्रतिस्थापित करेगा। अभी भी गलत।
टॉम ज़ातो -
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.