জাভাস্ক্রিপ্টে একটি স্ট্রিংয়ে ড্যাশ পরে সমস্ত কিছু পান


150

এটি করার সবচেয়ে পরিষ্কার উপায় কী হবে যা আইআই এবং ফায়ারফক্স উভয় ক্ষেত্রেই কাজ করবে।

আমার স্ট্রিংটি এর মতো দেখাচ্ছে: sometext-20202

এখন 'সামটেক্সট' এবং ড্যাশের পরে পূর্ণসংখ্যা বিভিন্ন দৈর্ঘ্যের হতে পারে।

আমি কি কেবল মাত্র স্ট্রিং এবং সূচক ব্যবহার করব বা অন্য উপায়গুলি?

উত্তর:


280

আমি এটি কীভাবে করব:

// function you can use:
function getSecondPart(str) {
    return str.split('-')[1];
}
// use the function:
alert(getSecondPart("sometext-20202"));

62
স্ট্রিং থাকলে এই ফাংশনটি কাজ করবে না তা কি উল্লেখ করার মতো নয় sometext-20202-303?
ইসতিয়াক আহমেদ

17
@ ইসতিয়াক আহমেদ যদি প্রশ্নটি নির্দিষ্ট কোনও নির্দিষ্ট বিন্যাস সম্পর্কে বিশেষভাবে না হয় তবে এটি হবে: "আমার স্ট্রিংটি এরকম দেখাচ্ছে: কিছুটা -20202"
আর্টল্যাং

7
এই প্রশ্নটিতে কোন প্রশ্নটি get everything after the dash in a string in javascriptব্যর্থ হবে।
আর্টেম কালিনচুক

108

আমার পছন্দের সমাধানটি হ'ল:

const str = 'sometext-20202';
const slug = str.split('-').pop();

যেখানে slugআপনার ফলাফল হবে


1
আপনি একাধিক ডিলিমিটারের সাথে কাজ করে থাকলে এই সমাধানগুলি সেরা।
ইথান কেইলি

26
var the_string = "sometext-20202";
var parts = the_string.split('-', 2);

// After calling split(), 'parts' is an array with two elements:
// parts[0] is 'sometext'
// parts[1] is '20202'

var the_text = parts[0];
var the_num  = parts[1];

24
var testStr = "sometext-20202"
var splitStr = testStr.substring(testStr.indexOf('-') + 1);

6

আমি যতদূর জানি, উভয় substring()এবং indexOf()উভয় মোজিলা এবং ইন্টারনেট দ্বারা সমর্থিত। তবে লক্ষ করুন যে সাবস্ট্রাস্ট () কিছু ব্রাউজারের পূর্ববর্তী সংস্করণগুলিতে সমর্থিত নয় (উদাহরণস্বরূপ নেটস্কেপ / অপেরা)।

আপনার পোস্টটি ইঙ্গিত দেয় যে আপনি কীভাবে এটি ব্যবহার করে এটি ইতিমধ্যে জানেন substring()এবং indexOf()তাই আমি কোনও কোডের নমুনা পোস্ট করছি না।


এটি আপনার আবেদনের উপর নির্ভর করে বিভক্তির চেয়ে ভাল সমাধান, কারণ আপনার যদি একের বেশি হয় - আপনি অনাকাঙ্ক্ষিত পরিণতি পেতে পারেন।
ট্র্যাভোরগ্রায়সন

20
স্ট্রিং.সুবস্ট্রিং (স্ট্রিং.ইন্ডেক্সঅফ ('-') + 1)
ট্রেভোরগ্রায়সন

ইনডেক্সফ আইই 8 এবং এর নীচে বিদ্যমান নেই, যদিও পলিফিলগুলি বিদ্যমান।
এরিক হান

3

আপনি বিল্ট-ইন RegExp (প্যাটার্ন [, পতাকাগুলি]) এর মতো জেএসে ফ্যাক্টরি স্বরলিপিটি দিয়ে এটি করতে পারেন:

RegExp(/-(.*)/).exec("sometext-20202")[1]

উপরের কোডে এক্সিকিউশন ফাংশন দুটি উপাদান (["-20202", "20202"]) এর সাথে একটি হাইফেন (-20202) এবং হাইফেন (20202) ছাড়াই একটিতে অ্যারে প্রদান করবে, আপনি দ্বিতীয় উপাদান বাছাই করতে হবে (সূচক 1)



0

ফর্মটির নিয়মিত প্রকাশটি ব্যবহার করুন: \ w- \ d + যেখানে a \ w একটি শব্দ এবং \ d একটি অঙ্ক উপস্থাপন করে represents তারা বাক্সের বাইরে কাজ করবে না, তাই চারপাশে খেলুন। এই চেষ্টা করুন ।

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