স্ল্যাশ অনুসরণ না করে স্ট্রিংটি ফিরুন


196

আমার দুটি পরিবর্তনশীল রয়েছে:

site1 = "www.somesite.com";  
site2 = "www.somesite.com/";  

আমি এরকম কিছু করতে চাই

function someFunction(site)
{
    // If the var has a trailing slash (like site2), 
    // remove it and return the site without the trailing slash
    return no_trailing_slash_url;
}

আমি এটা কিভাবে করবো?


উত্তর:


480

এটা চেষ্টা কর:

function someFunction(site)     
{     
    return site.replace(/\/$/, "");
} 

122
একাধিক return site.replace(/\/+$/, "");
ট্রেলিং

13
"/ ".replace(/\/$/," ")" "হবে। "/" একটি বৈধ পাথ এবং এটি ছিনিয়ে নেওয়া উচিত নয়।
পুচু

79
function stripTrailingSlash(str) {
    if(str.substr(-1) === '/') {
        return str.substr(0, str.length - 1);
    }
    return str;
}

দ্রষ্টব্য: আইই 8 এবং এর চেয়ে বেশি বয়সীরা নেতিবাচক সাবস্ট্রাস্ট অফসেটগুলি সমর্থন করে না। আপনার str.length - 1যদি সেই প্রাচীন ব্রাউজারগুলিকে সমর্থন করতে হয় তবে তার পরিবর্তে ব্যবহার করুন ।


সত্যিই এখানে 'প্রাচীন' শব্দটি ব্যবহার করার মতো।
পেজসোর্স

48

ES6 / ES2015 স্ট্রিংটি কোনও কিছুর সাথে শেষ হয় কিনা তা জিজ্ঞাসা করার জন্য একটি এপিআই সরবরাহ করে যা ক্লিনার এবং আরও পাঠযোগ্য ফাংশন লিখতে সক্ষম করে।

const stripTrailingSlash = (str) => {
    return str.endsWith('/') ?
        str.slice(0, -1) :
        str;
};

3
2019-এর সেরা সমাধান
পল র‌্যাড

@ পলর্যাড এই দ্রাবকটি ব্যবহার করার সময়, ইউনিট পরীক্ষায় এই লাইনের জন্য স্ট্রাইস্লাইস (0, -1) শাখাটি জড়িত নয়। কীভাবে ঠিক করব?
বিজয় রায়

30

আমি একটি নিয়মিত অভিব্যক্তি ব্যবহার করব:

function someFunction(site)
{
// if site has an end slash (like: www.example.com/),
// then remove it and return the site without the end slash
return site.replace(/\/$/, '') // Match a forward slash / at the end of the string ($)
}

আপনি ভেরিয়েবলটি siteএকটি স্ট্রিং কিনা তা নিশ্চিত করতে চাইবেন ।


3
আমি সম্পূর্ণরূপে একমত, আপনি যে কোনও সময় রেজেক্স লিখেন, এটিকে কোনও বর্ণনামূলক নাম বা মন্তব্য সহ কোনও ফাংশনে আবৃত করা উচিত।
এরিক লাবশোস্কি

12

এই স্নিপেট আরও সঠিক:

str.replace(/^(.+?)\/*?$/, "$1");
  1. এটি /স্ট্রিংগুলি স্ট্রিপ করে না কারণ এটি একটি বৈধ url।
  2. এটি একাধিক ট্রেলিং স্ল্যাশ সহ স্ট্রিংগুলি স্ট্রিপ করে।

যদিও এটি একাধিক স্ল্যাশগুলি অপসারণের জন্য একটি বৈধ পন্থা হতে পারে, এটি অপের অনুরোধ নয়।
জন এল।

@JonL। উত্তর খুঁজে পেতে অনেকে স্ট্যাক ওভারফ্লো ব্রাউজ করেন। আমি এই উত্তরটি গৃহীত উত্তরের চেয়ে সহায়ক বলে মনে করি।
রোনাল মার্টিনেজ

@JonL। উত্তর খুঁজে পেতে অনেকে স্ট্যাক ওভারফ্লো ব্রাউজ করেন। আমি এই উত্তরটি গৃহীত উত্তরের চেয়ে সহায়ক বলে মনে করি।
রোনাল মার্টিনেজ

10

আমি জানি যে প্রশ্নটি পিছনে পিছনের বিষয়ে রয়েছে তবে আমি এই পোস্টটি স্ল্যাশ ট্রিমিংয়ের জন্য অনুসন্ধান করতে গিয়ে খুঁজে পেয়েছি (উভয় লেজ এবং মাথার উভয় দিকের স্ট্রিং), যেহেতু লোকেরা এই সমাধানটির প্রয়োজন হবে আমি এখানে পোস্ট করছি:

'///I am free///'.replace(/^\/+|\/+$/g, ''); // returns 'I am free'

আপডেট :

@ স্টেফেন আর মন্তব্যে উল্লিখিত হিসাবে , আপনি যদি লেজ এবং স্ট্রিংয়ের আক্ষরিক মাথাতে উভয় স্ল্যাশ এবং ব্যাকস্ল্যাশগুলি অপসারণ করতে চান তবে আপনি লিখবেন:

'\/\\/\/I am free\\///\\\\'.replace(/^[\\/]+|[\\/]+$/g, '') // returns 'I am free'

এটাই আসল উত্তর!
পারেক করতে পারেন

1
আপনি যদি উভয় স্ল্যাশ এবং ব্যাকস্ল্যাশগুলি ছাঁটাই করতে চান:.replace(/^[\\/]+|[\\/]+$/g, '')
স্টিফেন আর

2

সহজ উপায়টি আমি জানি এটি এটি

function stipTrailingSlash(str){
   if(srt.charAt(str.length-1) == "/"){ str = str.substr(0, str.length - 1);}
   return str
}

এটি তারপরে একটি / শেষে যাচাই করবে এবং এটি যদি এটি সরিয়ে দেয় তবে এটি যদি আপনার স্ট্রিংটি যেমন ছিল তেমন ফিরে না আসে

আমি কেবল একটি জিনিস যা এখনও মন্তব্য করতে পারছি না @ থিফমাস্টার বাহ আপনি স্মৃতি সম্পর্কে যত্নবান নন আপনি কি কোনও সাবস্ট্র্রিকে রান্নাইন করতে পারবেন?

স্ট্রিংয়ে শূন্য-ভিত্তিক সূচকের জন্য গণনা স্থির করে।


2

এখানে একটি ছোট url উদাহরণ।

var currentUrl = location.href;

if(currentUrl.substr(-1) == '/') {
    currentUrl = currentUrl.substr(0, currentUrl.length - 1);
}

নতুন ইউআরএল লগ করুন

console.log(currentUrl);

2

@ ভিদেজেনের উত্তরের উপর ভিত্তি করে ... কীভাবে ফেলা যায়:

একক ট্রেলিং স্ল্যাশ:

theString.replace(/\/$/, '');

একক বা একটানা পেছনের স্ল্যাশ:

theString.replace(/\/+$/g, '');

একক শীর্ষস্থানীয় স্ল্যাশ:

theString.replace(/^\//, '');

একক বা একটানা নেতৃস্থানীয় স্ল্যাশ:

theString.replace(/^\/+/g, '');

একক শীর্ষস্থানীয় এবং পেছনের স্ল্যাশ:

theString.replace(/^\/|\/$/g, '')

একক বা একটানা নেতৃস্থানীয় এবং পিছনে স্ল্যাশগুলি:

theString.replace(/^\/+|\/+$/g, '')

উভয় স্ল্যাশ এবং পরিচালনা করা ফিরে স্ল্যাশ, দৃষ্টান্ত প্রতিস্থাপন \/সঙ্গে[\\/]


1
function stripTrailingSlash(text) {
    return text
        .split('/')
        .filter(Boolean)
        .join('/');
}

অন্য একটি সমাধান।


-11
function someFunction(site) {
  if (site.indexOf('/') > 0)
    return site.substring(0, site.indexOf('/'));
  return site;
}

2
subtring? তদ্ব্যতীত, এটি প্রথম স্ল্যাশ এবং তার পরে সমস্ত কিছু সরিয়ে দেয়।
চোরমাস্টার

@ থিফমাস্টার: সত্যি? আপনি বলতে পারবেন না যে আমি বোঝাতে চাইছি substring? এছাড়াও হ্যাঁ, আমি প্রথম স্ল্যাশ এবং তার পরে সমস্ত কিছু সরিয়ে ফেলতে চাইছিলাম কারণ এটি পোস্ট করা প্রশ্ন এবং উদাহরণ ডেটার জন্য বিল পূরণ করে না।
josh.trow

ভাল তার মন্তব্য বলে যে সে পিছনে স্ল্যাশ সরিয়ে দিতে চায়
থিফমাস্টার

@ থিফমাস্টার: যা তার উদাহরণ অনুসারে আমার কোডটি করে।
josh.trow

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