URL की शुरुआत में स्ट्रिंग निकालें


105

मैं www.URL स्ट्रिंग की शुरुआत से " " भाग को हटाना चाहता हूं

उदाहरण के लिए इन परीक्षण मामलों में:

उदाहरण www.test.comtest.com
उदाहरण www.testwww.comtestwww.com
उदाहरण testwww.comtestwww.com(यदि यह मौजूद नहीं है)

क्या मुझे Regexp का उपयोग करने की आवश्यकता है या कोई स्मार्ट फ़ंक्शन है?


यह एक बहुत पुराना प्रश्न है, लेकिन यह 2019 में इंगित करने योग्य है कि आपको इसके लिए URL पार्सर का उपयोग करना चाहिए बजाय एक regex के
mikemaccana

1
www.comइन सभी प्रतिक्रियाओं का स्वामी बहुत दुखी होने वाला है।
ब्रेनकोर

जवाबों:


234

निर्भर करता है कि आपको क्या चाहिए, आपके पास कुछ विकल्प हैं, आप कर सकते हैं:

// this will replace the first occurrence of "www." and return "testwww.com"
"www.testwww.com".replace("www.", "");

// this will slice the first four characters and return "testwww.com"
"www.testwww.com".slice(4);

// this will replace the www. only if it is at the beginning
"www.testwww.com".replace(/^(www\.)/,"");

24
शायद अंतिम एक इष्टतम समाधान है।
क्रिस्टोफ

11
यह इष्टतम समाधान नहीं है। एक प्रतिस्थापन को हटाने के लिए एक regexp बनाना एक ओवरकिल है!
बेरेज़ोवस्की

4
@berezovskiy यह इस बात पर निर्भर करता है कि आप क्या कर रहे हैं, उदाहरण के लिए यदि आप एक ऐसा खेल बना रहे हैं जिसमें प्रदर्शन महत्वपूर्ण हो तो आप सही हों, ज्यादातर मामलों में IMO का स्पष्ट होना बेहतर है और न्यूनतम परफेक्ट के लिए बग का परिचय न दें मारो। फिर भी, उत्तर चुनने के लिए 3 अलग-अलग उदाहरण प्रदान करता है।
निकोसेंटेंजेलो

7
मैं दृढ़ता से अंतिम विकल्प पसंद करता हूं। जबकि यह सच है कि उपयोग slice()करना थोड़ा तेज है, यह 99.9% परिदृश्यों में एक अप्रासंगिक, समय से पहले अनुकूलन है। लेखन replace(/^www\./,"") स्पष्ट, स्व-दस्तावेजीकरण कोड है।
टॉम भगवान

5
पहला और दूसरा समाधान तीसरे उदाहरण के मामले में विफल हो जाएगा। टुटुत
येरेक टी

13

हाँ, एक RegExp है, लेकिन आपको इसे या किसी "स्मार्ट" फ़ंक्शन का उपयोग करने की आवश्यकता नहीं है:

var url = "www.testwww.com";
var PREFIX = "www.";
if (url.indexOf(PREFIX) == 0) {
  // PREFIX is exactly at the beginning
  url = url.slice(PREFIX.length);
}

11

यदि स्ट्रिंग में हमेशा समान प्रारूप होता है, तो एक साधारण substr()को पर्याप्त होना चाहिए।

var newString = originalStrint.substr(4)

4
testwww.comtwww.com= विफल
क्रिस्टोफ़

1
@Christoph Ya, जिस तरह से उन्होंने मेरे उत्तर के बाद अपने प्रश्न को संपादित किया, इसीलिए मैंने उल्लेख किया कि यदि स्ट्रिंग में हमेशा एक ही प्रारूप है
ताजनगरी

14
@Christoph और यह " testwww.comwww.com= FAIL" होगा
तालनिकोल

6

या तो मैन्युअल, जैसे

var str = "www.test.com",
    rmv = "www.";

str = str.slice( str.indexOf( rmv ) + rmv.length );

या सिर्फ उपयोग करें .replace():

str = str.replace( rmv, '' );

1
मुझे मैनुअल एप्रोच पसंद है, क्योंकि स्ट्रिंग्स को वैरिएबल से रिजेक्स में गड़बड़ी का कोई खतरा नहीं हो सकता है।
nha

5

आप एक हटाए गए फ़ंक्शन के साथ स्ट्रिंग प्रोटोटाइप को ओवरलोड कर सकते हैं:

String.prototype.removePrefix = function (prefix) {
    const hasPrefix = this.indexOf(prefix) === 0;
    return hasPrefix ? this.substr(prefix.length) : this.toString();
};

उपयोग:

const domain = "www.test.com".removePrefix("www."); // test.com

मेरा मानना ​​है कि स्ट्रिंग के प्रोटोटाइप को संशोधित करने के लिए बुरा व्यवहार है
dman

हाँ, किसी भी प्रोटोटाइप अधिक भार की तरह, जोखिम किसी अन्य विधि (यहाँ के साथ एक नाम टक्कर है removePrefixपर Stringवर्ग), इसके विपरीत यह सिर्फ कॉल करने के लिए काफी सुविधाजनक है .removePrefix। यह आप पर निर्भर करता है।
फ्लाविएन वोलकेन

2

निम्नलिखित प्रयास करें

var original = 'www.test.com';
var stripped = original.substring(4);

0

आप url को काट सकते हैं और response.sendredirect (नया url) का उपयोग कर सकते हैं, यह आपको नए URL के साथ एक ही पेज पर लाएगा


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