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


112

मैं पहले से ही एक घंटे से अधिक समय के लिए कोशिश कर रहा हूं और इसे करने का सही तरीका पता लगा सकता हूं, हालांकि यह बहुत आसान है:

मेरे पास कुछ इस तरह है: foo/bar/test.html

मैं आखिरी के बाद सब कुछ निकालने के लिए jQuery का उपयोग करना चाहूंगा /। उदाहरण में आउटपुट के ऊपर होगा test.html

मुझे लगता है कि इसका उपयोग किया जा सकता है substrऔर indexOf(), लेकिन मैं काम कर समाधान नहीं ढूंढ सकता।

जवाबों:


243

कम से कम तीन तरीके:

एक नियमित अभिव्यक्ति:

var result = /[^/]*$/.exec("foo/bar/test.html")[0];

... जो कहता है " [^/]*स्ट्रिंग के अंत में स्लैश नहीं होने वाले पात्रों की श्रृंखला को पकड़ो" ( $)। तब यह मिलान किए गए ऑब्जेक्ट से मिलान किए गए ऑब्जेक्ट को इसमें अनुक्रमित करके पकड़ लेता है ( [0]); एक मैच ऑब्जेक्ट में, पहली प्रविष्टि पूरे मिलान स्ट्रिंग है। कब्जा समूहों के लिए कोई ज़रूरत नहीं है।

जीवंत उदाहरण

उपयोग करना lastIndexOfऔर substring:

var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);

lastIndexOfऐसा लगता है कि यह कैसा लगता है: यह एक स्ट्रिंग में एक चरित्र (अच्छी तरह से, स्ट्रिंग) की अंतिम घटना का सूचकांक पाता है , यदि नहीं मिला तो -1 लौट रहा है। दस में से नौ बार आप शायद उस रिटर्न वैल्यू ( if (n !== -1)) को चेक करना चाहते हैं , लेकिन ऊपर से जब से हम इसमें 1 जोड़ रहे हैं और सबस्ट्रिंग को कॉल कर रहे हैं, हम अंत में str.substring(0)वही करेंगे जो स्ट्रिंग को वापस करता है।

का उपयोग करते हुए Array#split

सुधीर और टॉम वाल्टर्स ने इसे यहाँ और यहाँ कवर किया है , लेकिन सिर्फ पूर्णता के लिए:

var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();

split दिए गए सीमांकक का उपयोग करके एक स्ट्रिंग को विभाजित करता है, जो एक सरणी देता है।

lastIndexOf/ substringसमाधान है शायद सबसे कारगर (हालांकि एक हमेशा जावास्क्रिप्ट और प्रदर्शन के बारे में कुछ भी कह रही है, के बाद से इंजन एक दूसरे से इतना मौलिक अलग-अलग हो सावधान हो गया है), लेकिन जब तक आप एक पाश में कई बार इस हजारों कर रहे हैं, ऐसा नहीं 't मामला और मैं कोड की स्पष्टता के लिए प्रयास करूँगा।


1
अंतिम स्लैश से पहले स्ट्रिंग को वापस करने के लिए आप इसे कैसे अनुकूलित करेंगे? (यानी मूल फ़ोल्डर का नाम वापस कर
दूंगा

28

आपको jQuery की आवश्यकता नहीं है, और इसे करने के लिए कई तरीके हैं, उदाहरण के लिए:

var parts = myString.split('/');
var answer = parts[parts.length - 1];

जहाँ myString में आपकी स्ट्रिंग होती है।


3
+1 (काम करने के लिए) इंगित करता है कि jQuery जावास्क्रिप्ट मुद्दों के लिए सभी-अंत समाधान नहीं है।
एंड्रयू जैकमैन 16

1
यह एक छोटी गाड़ी का समाधान है, कोशिश करें कि यदि आप स्लैश को स्लग में जोड़ते हैं तो क्या होगा? यह वापस आता है 0. और क्या होता है कोई स्लग नहीं है? - NaN लौटाता है! WTF? खराब कोड
डोनटास सेरेस्का

1) प्रश्न एक इनपुट से संबंधित था जो शून्य नहीं था 2) इनपुट फ़ाइल-नाम (कोई स्लैश) में समाप्त होने वाले इनपुट से संबंधित था 3) स्वीकृत उत्तर वास्तव में बहुत बेहतर समाधान है, इसलिए कई वोट 4) आपका अपना समाधान जोड़ने के लिए आपका स्वागत है
टॉम वाल्ट्स

12
var str = "foo/bar/test.html";
var lastSlash = str.lastIndexOf("/");
alert(str.substring(lastSlash+1));


5

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

// if str is C:\windows\file system\path\picture name.jpg
alert( str.split('\\').pop() );

के साथ चेतावनी चबूतरे picture name.jpg


2
String path ="AnyDirectory/subFolder/last.htm";
int pos = path.lastIndexOf("/") + 1;

path.substring(pos, path.length()-pos) ;

अब आपके पास path string में last.htm है।


1

हल्के वजन

string.substring(start,end)

कहाँ पे

start = Required। वह स्थान जहाँ निकासी शुरू की जाए। पहला वर्ण 0` सूचकांक पर है।

end = Optional। स्थिति (अप करने के लिए, लेकिन शामिल नहीं) जहां निकासी को समाप्त करने के लिए। यदि छोड़ा गया है, तो यह शेष स्ट्रिंग को निकालता है।

    var string = "var1/var2/var3";

    start   = string.lastIndexOf('/');  //console.log(start); o/p:- 9
    end     = string.length;            //console.log(end);   o/p:- 14

    var string_before_last_slash = string.substring(0, start);
    console.log(string_before_last_slash);//o/p:- var1/var2

    var string_after_last_slash = string.substring(start+1, end);
    console.log(string_after_last_slash);//o/p:- var3

या

    var string_after_last_slash = string.substring(start+1);
    console.log(string_after_last_slash);//o/p:- var3

1

jQuery:

var afterDot = value.substr(value.lastIndexOf('_') + 1);

जावास्क्रिप्ट:

var myString = 'asd/f/df/xc/asd/test.jpg'
var parts    = myString.split('/');
var answer   = parts[parts.length - 1];
console.log(answer);

बदलें '_' || अपनी जरूरत के लिए '/'


1

जैसा कि प्रश्न में आवश्यक है ::

var string1= "foo/bar/test.html";
  if(string1.contains("/"))
  {
      var string_parts = string1.split("/");
    var result = string_parts[string_parts.length - 1];
    console.log(result);
  }  

और url पर पूछे गए प्रश्न ('=' की एक घटना के लिए पूछा गया) ::
[ http://stackoverflow.com/questions/24156535/how-to-split-a-string-after-a-particular-character-in -jquery] [1]

var string1= "Hello how are =you";
  if(string1.contains("="))
  {
      var string_parts = string1.split("=");
    var result = string_parts[string_parts.length - 1];
    console.log(result);
  }

0

इसे इस्तेमाल करे:

const url = "files/images/gallery/image.jpg";

console.log(url.split("/").pop());


यह समाधान पहले से ही स्वीकृत उत्तर में है, तीसरे संभावित समाधान के रूप में
εη.τοιβε.βε
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.