একটি জাভাস্ক্রিপ্ট স্ট্রিংয়ে কীভাবে বিশ্বব্যাপী একটি ফরোয়ার্ড স্ল্যাশ প্রতিস্থাপন করবেন?


130

একটি জাভাস্ক্রিপ্ট স্ট্রিংয়ে কীভাবে বিশ্বব্যাপী একটি ফরোয়ার্ড স্ল্যাশ প্রতিস্থাপন করবেন?

উত্তর:


256

নিম্নলিখিতগুলি কেবল একটি ঘটনাকে প্রতিস্থাপন করবে:

"string".replace('/', 'ForwardSlash');

বিশ্বব্যাপী প্রতিস্থাপনের জন্য, বা আপনি যদি নিয়মিত মত প্রকাশের পছন্দ করেন তবে আপনাকে কেবল স্ল্যাশ থেকে বাঁচতে হবে:

"string".replace(/\//g, 'ForwardSlash');

3
প্রথম স্নিপেট বিশ্বব্যাপী প্রতিস্থাপন করে না। কীভাবে বিশ্বব্যাপী প্রতিস্থাপনটি নন-রেজেক্স পদ্ধতিতে করবেন তা খুব বেশি নিশ্চিত Not
বোল্টক্লক

আহ ঠিক আছে, আমি এটি স্ল্যাশের চেয়ে বেশি চেষ্টা করে দেখিনি। এটি দিয়ে কাজ করা যেতে পারে "string".replace('/', 'ForwardSlash', 'g')তবে এটি অ-মানক যুক্তি যা কেবল ফায়ারফক্স আফাইকেই কাজ করে।
সেলডেক

1
"string".replace(/\//g, 'ForwardSlash');কাজ করে তবে এ থেকে / গ্রাম অপসারণ করে এটি কার্যকর হয় না।
উদ্যোক্তা

1
@ জোহানট্রিয়েনার জি ইঙ্গিত দেয় এটি একটি বৈশ্বিক প্রতিস্থাপন, অর্থাৎ এটি ম্যাচের সমস্ত উদাহরণকে প্রতিস্থাপন করে /। ছ ছাড়া এটি কেবল একটি উদাহরণ প্রতিস্থাপন করে। এবং যদি আপনি অপসারণ করেন তবে আপনি /gসর্বশেষে / শেষের ডিলিমিটারের থেকে পুরোপুরি রেজেক্স ভেঙে দিন।
সেলডেক

1
@ রামেশরাজেন্দ্রন এপিআই-এর ঠিক এইভাবেই .. ডিফল্টরূপে এটি প্রতিস্থাপিত করার সময় এটি কেবল একবার প্রতিস্থাপন করে s বিকাশকারী.মোজিলা.অর্গ.ও
ডকস

27

সংশোধকটির সাথে একটি রেজেক্স আক্ষরিক ব্যবহার করুন gএবং একটি ব্যাকস্ল্যাশ দিয়ে ফরোয়ার্ড স্ল্যাশ থেকে রক্ষা করুন যাতে এটি ডিলিমিটারগুলির সাথে সংঘর্ষ না করে।

var str = 'some // slashes', replacement = '';
var replaced = str.replace(/\//g, replacement);

7

রেজেক্স ব্যবহার না করেই (যদিও আমি কেবল এটি তখনই করতাম যদি অনুসন্ধানের স্ট্রিংটি ব্যবহারকারী ইনপুট হয়):

var str = 'Hello/ world/ this has two slashes!';
alert(str.split('/').join(',')); // alerts 'Hello, world, this has two slashes!' 


4

এটি আমার পক্ষে ন্যায়বিচারে পরিণত "//"হওয়ার পক্ষে কাজ করেছে "/"

str.replace(/\/\//g, '/');

2

ক্রস ব্রাউজার সমস্যা বা // মন্তব্য করা এড়াতে আপনাকে ফরোয়ার্ড স্ল্যাশ মোড়ানো দরকার।

str = 'this/that and/if';

var newstr = str.replace(/[/]/g, 'ForwardSlash');

1

হাই স্ক্রিপ্ট উপরের স্ক্রিপ্টে একটি ছোট সংশোধন .. উপরের স্ক্রিপ্ট আউটপুট প্রদর্শিত যখন প্রথম অক্ষর এড়ানো।

function stripSlashes(x)
{
var y = "";
for(i = 0; i < x.length; i++)
{
    if(x.charAt(i) == "/")
    {
        y += "";
    }
    else
    {
        y+= x.charAt(i);
    }
}
return y;   
}

0
var str = '/questions'; // input: "/questions"
while(str.indexOf('/') != -1){
   str = str.replace('/', 'http://stackoverflow.com/');
}
alert(str); // output: "http://stackoverflow.com/questions"

প্রস্তাবিত রেজেক্স /\//gআমার পক্ষে কাজ করেনি; বাকী রেখাটি ( //g, replacement);) মন্তব্য করা হয়েছিল।


1
দয়া করে নোট করুন যে আমি কীভাবে এর পারফরম্যান্স প্রস্তাবিত অ্যারে বিভাজন / যোগদানের সমাধানের সাথে তুলনা করে তা নিশ্চিত নই।
ক্রিস্টোফার লিংকন

... এতে হোঁচট খেয়েছে ... চৌকস সিনট্যাক্স হাইলাইট করে বিভিন্ন আইডিই চেষ্টা করুন। আপনার কোড সম্পাদকের রঙের উপর নির্ভর করবেন না, তবে রানটাইমের সময় আপনার কোডটি সঠিকভাবে টোকানাইজিং হিসাবে রাষ্ট্রীয় পার্সারগুলির শক্তিতে বিশ্বাস করুন।
soletan

0

এটি ক্রিস্টোফার লিংকনসের ধারণা তবে সঠিক কোড সহ:

function replace(str,find,replace){
    if (find != ""){
        str = str.toString();
        var aStr = str.split(find);
        for(var i = 0; i < aStr.length; i++) {
            if (i > 0){
                str = str + replace + aStr[i];
            }else{
                str = aStr[i];
            }
        }
    }
    return str;
}

ব্যবহারের উদাহরণ:

var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');

জাভাস্ক্রিপ্ট গ্লোবাল স্ট্রিং প্রতিস্থাপন অসাধারণভাবে জটিল। এই ফাংশনটি সমস্যার সমাধান করে। একটি ছোট পারফরম্যান্স প্রভাব সম্ভবত আছে, তবে আমি নিশ্চিত এটির তুচ্ছ।

তিনি এখানে একটি বিকল্প ফাংশন দেখতে অনেকটা পরিষ্কার দেখেন তবে উপরের ফাংশনটির তুলনায় গড়ে প্রায় 25 থেকে 20 শতাংশ ধীর হয়ে থাকে:

function replace(str,find,replace){
    if (find !== ""){
        str = str.toString().split(find).join(replace);
    }
    return str;
}

-1

RegExpএটিকে কিছুটা বেশি পঠনযোগ্য করার জন্য আপনি কোনও অবজেক্ট তৈরি করতে পারেন

str.replace(new RegExp('/'), 'foobar');

আপনি যদি তাদের সমস্তটি প্রতিস্থাপন করতে চান তবে "g"পতাকাটি যুক্ত করুন

str.replace(new RegExp('/', 'g'), 'foobar');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.