एक स्ट्रिंग के पहले और आखिरी चरित्र को कैसे हटाया जाए


161

मैं कैसे जावास्क्रिप्ट में एक स्ट्रिंग के पहले और आखिरी चरित्र को हटाने के लिए सोच रहा हूँ।

मेरा url दिख /installers/रहा है और मुझे बस चाहिए installers

कभी-कभी यह होगा /installers/services/और मुझे बस जरूरत है installers/services

इसलिए मैं सिर्फ स्लैश को नहीं छीन सकता /


मैं उस के पहले और आखिरी किरदार को बस उतारने की कोशिश कर रहा हूं। मैं सिर्फ
Peanut

मुझे आश्चर्य है कि क्यों किसी को यह नहीं लगता कि ट्रिमिंग स्लैश (जैसा कि पाठ इंगित करता है) और बिना किसी स्ट्रिंग के पहले और आखिरी चार को हटाना (जैसा कि कैप्शन इंगित करता है) काफी समान नहीं है। लेकिन यह नीचे दिए गए जवाबों की विस्तृत श्रृंखला की व्याख्या करता है।
18

जवाबों:


360

हेयर यू गो

var yourString = "/installers/";
var result = yourString.substring(1, yourString.length-1);

console.log(result);

या आप अंकित गुप्ता.slice द्वारा सुझाए अनुसार उपयोग कर सकते हैं

var yourString = "/installers/services/";

var result = yourString.slice(1,-1);

console.log(result);

के लिए दस्तावेज़ टुकड़ा और सबस्ट्रिंग


6
लेकिन यूआरएल स्लैश के साथ समाप्त नहीं होता है, यह 1 चरित्र का लेगा
मार्टिग्न

7
@Martijn इस सवाल का सही जवाब देता है। किसी ने नहीं कहा कि तुम स्लैश के अलावा कुछ भी पट्टी नहीं चाहते हैं;)। +1 मुझसे - कोड को कहना चाहिए कि यह क्या करना चाहिए, यहां रेगेक्स के उदाहरण नहीं।
एपिसोड

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

अनुगामी स्लैश हमेशा वहाँ रहने वाला है क्योंकि यह index.php फ़ाइल की ओर इशारा कर रहा है ...
मूंगफली


14

मुझे नहीं लगता कि jQuery का इससे कोई लेना-देना है। वैसे भी, निम्नलिखित प्रयास करें:

url = url.replace(/^\/|\/$/g, '');

1
यह अब तक का सबसे सही लग रहा है। केवल एक चीज है, मैं एक क्वांटिफायर जोड़ूंगा, बस मामले में /^\/+|\/+$/g:।
georg

8

आप इसे पुनः प्राप्त कर सकते हैं:

"string".replace(/^\/?|\/?$/, "")
"/installers/services/".replace(/^\/?|\/?$/, "") // -> installers/services

रेगेक्स ने समझाया:
- वैकल्पिक पहला स्लैश:, ^/?बच गया -> ^\/?( ^स्ट्रिंग की शुरुआत का मतलब)
- पाइप (!) के रूप में पढ़ा जा सकता है or
- अंत में विकल्प स्लैश से -> /?$, बच गए -> \/?$( $स्ट्रिंग के अंत का मतलब) )

संयुक्त यह ^/?|/$भागने के बिना होगा । वैकल्पिक प्रथम स्लैश या वैकल्पिक अंतिम स्लैश


बात यह है कि मैं "/" पट्टी नहीं कर सकता क्योंकि कभी-कभी मुझे यूआरएल के आंतरिक हिस्सों को अलग करने की आवश्यकता होगी
मूंगफली

भीतर के स्लेश दूर नहीं जाते। बीमार संपादित करें और regex की व्याख्या करें
Martijn

3
मुझे लगता है कि इस काम को करने के लिए आपको वैश्विक ध्वज की आवश्यकता है: "/installers/services/".replace(/^\/?pg\/?$/g," ")
मैट

3

आप substringविधि का उपयोग कर सकते हैं

s = s.substring(0, s.length - 1) //removes last character

एक अन्य विकल्प sliceविधि है


3

आप ऐसा कुछ कर सकते हैं:

"/installers/services/".replace(/^\/+/g,'').replace(/\/+$/g,'')

यह रेगेक्स trimकई भाषाओं में उपयोग किए जाने वाले फ़ंक्शन के समान व्यवहार का एक सामान्य तरीका है ।

ट्रिम फ़ंक्शन का एक संभावित कार्यान्वयन है:

function trim(string, char){
    if(!char) char = ' '; //space by default
    char = char.replace(/([()[{*+.$^\\|?])/g, '\\$1'); //escape char parameter if needed for regex syntax.
    var regex_1 = new RegExp("^" + char + "+", "g");
    var regex_2 = new RegExp(char + "+$", "g");
    return string.replace(regex_1, '').replace(regex_2, '');
}

जो /स्ट्रिंग की शुरुआत और अंत में सभी को हटा देगा । यह जैसे मामलों को संभालता है///installers/services///

आप भी बस कर सकते हैं:

"/installers/".substring(1, string.length-1);


1

यदि आपको स्ट्रिंग के पहले लेटर को हटाने की आवश्यकता है

string.slice(1, 0)

और अंतिम पत्र निकालने के लिए

string.slice(0, -1)

-3
url=url.substring(1,url.Length-1);

इस तरह आप निर्देशिकाओं का उपयोग कर सकते हैं यदि यह पसंद है ... / ... / ... / ... आदि।


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