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


130

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

जवाबों:


256

निम्नलिखित करना होगा, लेकिन केवल एक घटना की जगह लेगा:

"string".replace('/', 'ForwardSlash');

वैश्विक प्रतिस्थापन के लिए, या यदि आप नियमित अभिव्यक्ति पसंद करते हैं, तो आपको बस स्लैश से बचना होगा:

"string".replace(/\//g, 'ForwardSlash');

3
पहला स्निपेट वैश्विक प्रतिस्थापन नहीं करता है। यह भी सुनिश्चित नहीं है कि गैर-रेगेक्स तरीके से वैश्विक प्रतिस्थापन कैसे किया जाए।
BoltClock

आह ठीक है, मैं एक स्लैश से अधिक के साथ यह कोशिश नहीं की। इसके साथ किया जा सकता है "string".replace('/', 'ForwardSlash', 'g')लेकिन यह गैर-मानक तर्क है जो केवल फ़ायरफ़ॉक्स afaik में काम करता है।
सेलडेक 30:10

1
"string".replace(/\//g, 'ForwardSlash');काम करता है, लेकिन इसमें से / g को हटा दें और यह काम नहीं करता है।
जोहंत उद्यमी

1
@johntrepreneur g यह इंगित करता है कि यह एक वैश्विक प्रतिस्थापन है, अर्थात यह मिलान के सभी उदाहरणों को प्रतिस्थापित करता है /। जी के बिना यह केवल एक उदाहरण को प्रतिस्थापित करता है। और अगर आप हटाते /gहैं तो आप आखिरी से पूरी तरह से रेगेक्स को तोड़ देते हैं।
सेलदेक

1
@RameshRajendran कि यह एपीआई है जिस तरह से है .. डिफ़ॉल्ट रूप से यह केवल एक बार बदल देता है जब इसे बदलने के लिए एक मिल जाता है। डेवलपर को
pmillailla.org/en-US/docs/Web/JavaScript/Reference/…

27

gसंशोधक के साथ एक रेगेक्स शाब्दिक का उपयोग करें , और एक बैकस्लैश के साथ आगे स्लैश से बचें ताकि यह सीमांकक के साथ टकराए नहीं।

var str = 'some // slashes', replacement = '';
var replaced = str.replace(/\//g, replacement);

7

रेगेक्स का उपयोग किए बिना (हालांकि मैं केवल यही करूंगा यदि खोज स्ट्रिंग उपयोगकर्ता इनपुट है):

var str = 'Hello/ world/ this has two slashes!';
alert(str.split('/').join(',')); // alerts 'Hello, world, this has two slashes!' 


4

यह मेरे लिए "//"बस में बदलने के लिए काम किया है "/"

str.replace(/\/\//g, '/');

2

क्रॉस ब्राउज़र के मुद्दों से बचने के लिए या बाहर टिप्पणी करने के लिए आपको फ़ॉरवर्ड स्लैश को लपेटना होगा।

str = 'this/that and/if';

var newstr = str.replace(/[/]/g, 'ForwardSlash');

1

हाय ऊपर की स्क्रिप्ट में एक छोटा सा सुधार .. ऊपर स्क्रिप्ट जब उत्पादन को प्रदर्शित करने के पहले चरित्र लंघन।

function stripSlashes(x)
{
var y = "";
for(i = 0; i < x.length; i++)
{
    if(x.charAt(i) == "/")
    {
        y += "";
    }
    else
    {
        y+= x.charAt(i);
    }
}
return y;   
}

0
var str = '/questions'; // input: "/questions"
while(str.indexOf('/') != -1){
   str = str.replace('/', 'http://stackoverflow.com/');
}
alert(str); // output: "http://stackoverflow.com/questions"

प्रस्तावित रेगेक्स /\//gने मेरे लिए काम नहीं किया; शेष पंक्ति ( //g, replacement);) पर टिप्पणी की गई थी।


1
कृपया ध्यान दें कि मैं निश्चित नहीं हूं कि इसका प्रदर्शन प्रस्तावित सरणी विभाजन / जुड़ने वाले समाधान की तुलना कैसे करता है।
क्रिस्टोफर लिंकन

... इस पर ठोकर खाई ... चालाक वाक्यविन्यास हाइलाइटिंग का उपयोग करके अलग आईडीई का प्रयास करें। अपने कोड संपादक के रंगों पर भरोसा न करें, लेकिन रनटाइम में अपने कोड को ठीक से टोकन करने वाले स्टेटस पार्सर्स की शक्ति में विश्वास करें।
सूतक काल

0

यह क्रिस्टोफर लोमबिन्स विचार है लेकिन सही कोड के साथ:

function replace(str,find,replace){
    if (find != ""){
        str = str.toString();
        var aStr = str.split(find);
        for(var i = 0; i < aStr.length; i++) {
            if (i > 0){
                str = str + replace + aStr[i];
            }else{
                str = aStr[i];
            }
        }
    }
    return str;
}

उदाहरण उपयोग:

var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');

जावास्क्रिप्ट वैश्विक स्ट्रिंग प्रतिस्थापन अनिवार्य रूप से जटिल है। यह फ़ंक्शन उस समस्या को हल करता है। शायद एक छोटा सा प्रदर्शन प्रभाव है, लेकिन मुझे यकीन है कि इसकी लापरवाही है।

एक वैकल्पिक फ़ंक्शन का उपयोग करता है, बहुत क्लीनर दिखता है, लेकिन उपरोक्त फ़ंक्शन की तुलना में औसतन 25 से 20 प्रतिशत धीमा है:

function replace(str,find,replace){
    if (find !== ""){
        str = str.toString().split(find).join(replace);
    }
    return str;
}

-1

आप RegExpइसे अधिक पठनीय बनाने के लिए एक ऑब्जेक्ट बना सकते हैं

str.replace(new RegExp('/'), 'foobar');

यदि आप उन सभी को बदलना चाहते हैं तो "g"ध्वज जोड़ें

str.replace(new RegExp('/', 'g'), 'foobar');
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.