জাভাস্ক্রিপ্টে স্ল্যাশের পরে একটি স্ট্রিংয়ের মান পান


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)যা কেবল স্ট্রিংটি দেয় returns

ব্যবহার Array#split

সুধীর এবং টম ওয়াল্টার্স এখানে এবং এখানে এটি কভার করেছেন তবে কেবল সম্পূর্ণতার জন্য:

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

split প্রদত্ত ডিলিমিটার ব্যবহার করে একটি স্ট্রিং বিভক্ত করে একটি অ্যারে ফিরিয়ে দেয়।

lastIndexOf/ substringসমাধান সম্ভবত সবচেয়ে বেশি কার্যকরী (যদিও একজন সবসময় জাভাস্ক্রিপ্ট এবং কর্মক্ষমতা সম্পর্কে কিছু বলার অপেক্ষা রাখে না, যেহেতু ইঞ্জিন একে অপরের থেকে তাই আমূল পরিবর্তন হওয়ার সম্ভাবনা রয়েছে সতর্কতা অবলম্বন করা আবশ্যক আছে), কিন্তু যদি না আপনি একটি লুপ সময়ের এই হাজার হাজার করছেন, এটা doesn 'ব্যাপার না এবং আমি কোডের স্পষ্টতার জন্য চেষ্টা করব।


1
চূড়ান্ত স্ল্যাশের আগে স্ট্রিংটি ফেরত দেওয়ার জন্য আপনি কীভাবে এটি মানিয়ে নেবেন? (অর্থাত্ প্যারেন্ট ফোল্ডারের নামটি ফিরিয়ে দিন)
wbadart

28

আপনার জিকিউরির দরকার নেই এবং এটি করার বিভিন্ন উপায় রয়েছে, উদাহরণস্বরূপ:

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

যেখানে মাইস্ট্রিংটিতে আপনার স্ট্রিং রয়েছে।


3
+1 (কাজের জন্য) উল্লেখ করে যে jQuery জাভাস্ক্রিপ্ট সমস্যাগুলির জন্য সর্বশেষ সমাধান নয় solution
অ্যান্ড্রু জ্যাকম্যান 16

1
এটি একটি বাগি সমাধান, আপনি যদি স্ল্যাশে স্ল্যাশ যোগ করেন তবে কী ঘটে তা চেষ্টা করুন? এটি 0. ফিরে আসে এবং সেখানে কোনও স্লাগ কী হয়? - ফেরত নাএন! 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) ;

পাথ স্ট্রিংয়ে এখন আপনার সর্বশেষে 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);

javascript:

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

এবং প্রশ্নের জন্য ইউআরএল জিজ্ঞাসা করা হয়েছে ('=' এর একটি ঘটনা জিজ্ঞাসা করা হয়েছে) :: ::
[ http://stackoverflow.com -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());


এই সমাধানটি ইতিমধ্যে গৃহীত উত্তরে, তৃতীয় সম্ভাব্য সমাধান হিসাবে
εηοιτ.εηοιτ.βε
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.