JQuery এর স্ট্রিং.ফর্ম্যাট এর সমান


194

আমি কিছু জাভাস্ক্রিপ্ট কোড মাইক্রোসফ্ট অজাক্স থেকে জিকুয়েরিতে সরিয়ে নেওয়ার চেষ্টা করছি। আমি জনপ্রিয়। নেট পদ্ধতিগুলির মাইক্রোসফ্ট অজ্যাক্সে জাভাস্ক্রিপ্টের সমতুল্য ব্যবহার করি, যেমন স্ট্রিং.ফর্ম্যাট (), স্ট্রিং.স্টার্টস উইথ () ইত্যাদি ইত্যাদি jQuery এ তাদের সমতুল্য?


উত্তর:


193

ASP.NET AJAX- এর উত্স কোডটি আপনার রেফারেন্সের জন্য উপলভ্য , যাতে আপনি এটিটি বেছে নিতে এবং পৃথক জেএস ফাইলটিতে ব্যবহার চালিয়ে যাওয়া অংশগুলি অন্তর্ভুক্ত করতে পারেন can অথবা, আপনি এগুলিকে jQuery এ পোর্ট করতে পারেন।

এখানে ফর্ম্যাট ফাংশনটি ...

String.format = function() {
  var s = arguments[0];
  for (var i = 0; i < arguments.length - 1; i++) {       
    var reg = new RegExp("\\{" + i + "\\}", "gm");             
    s = s.replace(reg, arguments[i + 1]);
  }

  return s;
}

এবং এখানে প্রান্তোটাইপ ফাংশন সহ শেষগুলি এবং শুরুগুলি রয়েছে ...

String.prototype.endsWith = function (suffix) {
  return (this.substr(this.length - suffix.length) === suffix);
}

String.prototype.startsWith = function(prefix) {
  return (this.substr(0, prefix.length) === prefix);
}

2
অনেক কিছুই আছে বলে মনে হচ্ছে না। জাভাস্ক্রিপ্ট সংস্করণে সমস্ত অভিনব সংখ্যা বিন্যাসকরণ স্পষ্টত নেই stuff blog.stevex.net/index.php/string-formatting-in-csharp
নসরেডা

বাহ, আমি আসলে এটি সম্পর্কে ইতিমধ্যে চিন্তা করেছি কিন্তু এটিও ভেবেছিলাম লাইসেন্সের কারণে এটি সম্ভব নয়, তারা জানত না যে তারা মাইক্রোসফ্ট পার্মিসিভ লাইসেন্সের অধীনে এটি প্রকাশ করেছে, এর জন্য অনেক ধন্যবাদ
ওয়ালিদ আইসা

23
লাইসেন্স বা লাইসেন্স নেই .. এত সহজ কিছু লেখার একমাত্র সঠিক উপায় আছে
adamJLev

1
প্রতিটি আর্গুমেন্টের জন্য প্রতিটি আর্গুমেন্টের জন্য RegEx অবজেক্ট তৈরি করা (এবং তারপরে ফেলে দেওয়া) আবর্জনা সংগ্রহকারীকে ছাড়িয়ে যেতে পারে।
এমকোসস

14
সতর্কতা: এই যাও recursively ফরম্যাট হবে: আপনি যদি তাই হয় {0}{1}, {0}প্রথম প্রতিস্থাপন করা হবে, এবং তারপর সব ঘটনার {1}উভয় ইতিমধ্যেই প্রতিস্থাপিত টেক্সট এবং আসল ফর্ম্যাটে প্রতিস্থাপন করা হবে।
জেনেক্সার

147

এটি জোশের যে ফাংশনটি পোস্ট করেছে তার একটি দ্রুত / সরল (এবং প্রোটোটাইপিকাল) প্রকরণ:

String.prototype.format = String.prototype.f = function() {
    var s = this,
        i = arguments.length;

    while (i--) {
        s = s.replace(new RegExp('\\{' + i + '\\}', 'gm'), arguments[i]);
    }
    return s;
};

ব্যবহার:

'Added {0} by {1} to your collection'.f(title, artist)
'Your balance is {0} USD'.f(77.7) 

আমি এটিকে এতটা ব্যবহার করি যে আমি এটিকে ন্যায়সঙ্গত করে দিয়েছি f, তবে আপনি আরও ভার্বোজ ব্যবহার করতে পারেন format। যেমন'Hello {0}!'.format(name)


1
আধুনিক ব্রাউজারগুলির সাথে আরও সহজ পদ্ধতি রয়েছে: স্ট্যাকওভারফ্লো.com
ডেভিড

3
@ ডেভিড টেম্পলেট স্ট্রিংগুলি আসলে একই জিনিস নয়। তারা স্ট্রিং কনটেনটেশনের জন্য সিনট্যাকটিক চিনি, এটি দুর্দান্ত তবে বিন্যাসের মতো নয়। এগুলি তাত্ক্ষণিকভাবে চালিত হয়, সুতরাং, সংশোধন করার স্থানটিতে অবশ্যই প্রতিস্থাপনের সুযোগ থাকতে হবে। আপনি এগুলি কারণে কোনও টেক্সট ফাইল বা ডাটাবেসে সংরক্ষণ করতে পারবেন না। আসলে, এগুলি যে কোনও জায়গায় সংরক্ষণ করার একমাত্র উপায় হ'ল এগুলি কোনও ফাংশনে রাখা। একটি ফর্ম্যাট স্ট্রিং ফাংশন স্থিতিশীল প্রতিস্থাপন গ্রহণ করে যা ভেরিয়েবলের নামটির বিষয়ে চিন্তা করে না।
kroe2

131

উপরের অনেকগুলি ফাংশন (জুলিয়ান জেল্ফস ব্যতীত) নিম্নলিখিত ত্রুটিটি রয়েছে:

js> '{0} {0} {1} {2}'.format(3.14, 'a{2}bc', 'foo');
3.14 3.14 afoobc foo

বা, আর্গুমেন্ট তালিকার শেষে থেকে পিছনে গণনা করা রূপগুলির জন্য:

js> '{0} {0} {1} {2}'.format(3.14, 'a{0}bc', 'foo');
3.14 3.14 a3.14bc foo

এখানে একটি সঠিক ফাংশন। এটি জুলিয়ান জেল্ফসের কোডের একটি প্রোটোটাইপাল বৈকল্পিক যা আমি কিছুটা শক্ত করে তুলেছিলাম:

String.prototype.format = function () {
  var args = arguments;
  return this.replace(/\{(\d+)\}/g, function (m, n) { return args[n]; });
};

এবং এখানে এটির সামান্য আরও উন্নত সংস্করণ রয়েছে, যা আপনাকে ধনুর্বন্ধনীগুলি দ্বিগুণ করে পালাতে সহায়তা করে:

String.prototype.format = function () {
  var args = arguments;
  return this.replace(/\{\{|\}\}|\{(\d+)\}/g, function (m, n) {
    if (m == "{{") { return "{"; }
    if (m == "}}") { return "}"; }
    return args[n];
  });
};

এটি সঠিকভাবে কাজ করে:

js> '{0} {{0}} {{{0}}} {1} {2}'.format(3.14, 'a{2}bc', 'foo');
3.14 {0} {3.14} a{2}bc foo

এখানে ব্লেয়ার মিচেলমোরের আরও একটি ভাল প্রয়োগ রয়েছে, যার সাথে একগুচ্ছ চমৎকার অতিরিক্ত বৈশিষ্ট্য রয়েছে: https://web.archive.org/web/20120315214858/http://blairmitchelmore.com/javascript/string.format


এবং অন্যটি, যা আমি খুব কাছ থেকে দেখিনি, তবে এটি {0: + $ #, 0.00; - $ #, 0.00; 0}: মাস্টারডাটা.অ্যান্ডেন্স.
org

ওহ, এবং পাইথন ইন্টারপোলেশন ফর্ম্যাটটি ব্যবহার করে: কোড. google.com/p/jquery-utils/wiki/…
gpvos

আমি যে দুটি ফর্ম্যাট আপ করেছি তার ফর্ম্যাট প্রয়োগটি মাস্টারডাটাতে
স্ট্রিং_ফর্ম্যাট_

দ্রষ্টব্য: এই পৃষ্ঠার অন্য কোথাও ianj এর উত্তর আপনাকে সংখ্যার পরামিতিগুলির পরিবর্তে নাম ব্যবহার করতে সক্ষম করে। আপনি যদি তার পদ্ধতিটি প্রোটোটাইপ ব্যবহার করে এমন একটিতে পরিবর্তন করেন তবে আপনাকে দ্বিতীয় প্যারামিটারটি স্লাইস.ক্ল্যাশনে 1 থেকে 0 থেকে পরিবর্তন করতে হবে
gpvos

48

একটি ফর্ম্যাট ফাংশন তৈরি করে যা কোনও সংগ্রহ বা একটি অ্যারে আর্গুমেন্ট হিসাবে গ্রহণ করে

ব্যবহার:

format("i can speak {language} since i was {age}",{language:'javascript',age:10});

format("i can speak {0} since i was {1}",'javascript',10});

কোড:

var format = function (str, col) {
    col = typeof col === 'object' ? col : Array.prototype.slice.call(arguments, 1);

    return str.replace(/\{\{|\}\}|\{(\w+)\}/g, function (m, n) {
        if (m == "{{") { return "{"; }
        if (m == "}}") { return "}"; }
        return col[n];
    });
};

5
খুব ভাল, যা অনুপস্থিত তা হ'ল: স্ট্রিং.প্রোটোটাইপ.ফর্ম্যাট = ফাংশন (কল) {রিটার্ন ফর্ম্যাট (এটি, কর্ন);}
এরিক

10
আমি স্ট্রিং প্রসারিত পছন্দ না করেন
ianj

3
ব্যবহারের ক্ষেত্রে একটি ছোট টাইপ রয়েছে: ২ য় লাইনটি হওয়া উচিত: ফর্ম্যাট ("আমি {0 speak বলতে পারি বলে আমি} 1}", 'জাভাস্ক্রিপ্ট', 10);
গিলিয়াম গেন্ড্রে

স্ট্রিং ব্যবহার করে স্ট্রিং কেন পছন্দ করবেন না String.prototype?
কিকিনেট

36

একটি (কিছুটা) অফিশিয়াল বিকল্প রয়েছে: jQuery . লাডিয়োলেটর.ফর্ম্যাট

JQuery বৈধকরণ প্লাগইন 1.6 (অন্তত) এর সাথে আসে। .NET
String.Formatপাওয়া যায় বেশিরভাগ মিল ।

স্থির ভাঙা লিঙ্ক সম্পাদনা করুন।


17

আপনি যদি বৈধতা প্লাগইন ব্যবহার করে থাকেন তবে:

jQuery.validator.format("{0} {1}", "cool", "formatting") = 'cool formatting'

http://docs.jquery.com/ প্লাগইনস / ভ্যালিডেশন / জ্যাকুয়েরি.অলয়েডেটর.ফর্মেট#templateargumentargumentN ...


1
JQuery ন্যূনতম সংস্করণ ?
কিকিনেট

13

যদিও প্রশ্নটি জিজ্ঞাসা করছিল ঠিক তা না, আমি একটি তৈরি করেছি যা অনুরূপ তবে নাম্বারযুক্ত স্থানধারকগুলি নাম্বার পরিবর্তে ব্যবহার করে। আমি ব্যক্তিগতভাবে আর্গুমেন্টের নামকরণ পছন্দ করি এবং কেবল কোনও বস্তুকে এটির পক্ষে যুক্তি হিসাবে প্রেরণ করি (আরও ভার্বোস, তবে বজায় রাখা সহজ)।

String.prototype.format = function (args) {
    var newStr = this;
    for (var key in args) {
        newStr = newStr.replace('{' + key + '}', args[key]);
    }
    return newStr;
}

এখানে একটি উদাহরণ ব্যবহার ...

alert("Hello {name}".format({ name: 'World' }));

8

একটি আধুনিক ব্রাউজার ব্যবহার করে, যা ইকমাস্ক্রিপ্ট 2015 (ইএস 6) সমর্থন করে, আপনি টেমপ্লেট স্ট্রিংগুলি উপভোগ করতে পারবেন । বিন্যাসকরণের পরিবর্তে, আপনি এটিতে পরিবর্তনশীল মানটি সরাসরি ইনজেক্ট করতে পারেন:

var name = "Waleed";
var message = `Hello ${name}!`;

নোট করুন টেমপ্লেট স্ট্রিংটি ব্যাক-টিক্স (`) ব্যবহার করে লিখতে হবে।


6

এখন পর্যন্ত উপস্থাপিত উত্তরের কোনওটিরই ব্যবহারের জন্য একবারে আরম্ভ করার জন্য নিয়মিত অভিব্যক্তি সঞ্চয় করার জন্য ঘেরটি ব্যবহার করার কোনও সুস্পষ্ট অপ্টিমাইজেশন নেই।

// DBJ.ORG string.format function
// usage:   "{0} means 'zero'".format("nula") 
// returns: "nula means 'zero'"
// place holders must be in a range 0-99.
// if no argument given for the placeholder, 
// no replacement will be done, so
// "oops {99}".format("!")
// returns the input
// same placeholders will be all replaced 
// with the same argument :
// "oops {0}{0}".format("!","?")
// returns "oops !!"
//
if ("function" != typeof "".format) 
// add format() if one does not exist already
  String.prototype.format = (function() {
    var rx1 = /\{(\d|\d\d)\}/g, rx2 = /\d+/ ;
    return function() {
        var args = arguments;
        return this.replace(rx1, function($0) {
            var idx = 1 * $0.match(rx2)[0];
            return args[idx] !== undefined ? args[idx] : (args[idx] === "" ? "" : $0);
        });
    }
}());

alert("{0},{0},{{0}}!".format("{X}"));

এছাড়াও, উদাহরণগুলির মধ্যে কোনওটি ইতিমধ্যে বিদ্যমান থাকলে বিন্যাস () প্রয়োগকে সম্মান করে।


2
rx2 অপ্রয়োজনীয়, আমার বাস্তবায়ন দেখুন; rx1 এ আপনার (প্রথম বন্ধনী) রয়েছে তবে তারা অভ্যন্তরীণ ফাংশনে যে মানটি প্রেরণ করে তা ব্যবহার করবেন না। এছাড়াও, আমি মনে করি এটি জাভাস্ক্রিপ্ট ইঞ্জিনে করার একটি সুস্পষ্ট অপ্টিমাইজেশন । আপনি কি নিশ্চিত যে আধুনিক ব্রাউজারগুলি ইতিমধ্যে পর্দার আড়ালে এই অপ্টিমাইজেশনটি করে না? পার্ল 1990 সালে এটি করেছিলেন You আপনি ঠিক বলেছেন যে এটি ইতিমধ্যে বাস্তবায়িত হয়েছে কিনা তা পরীক্ষা করার জন্য ফাংশনটির চারপাশে একটি মোড়ক থাকা উচিত।
gpvos

1
এছাড়াও, (আরগস [আইডিএক্স] === "") -এর পরীক্ষাটি আমার কাছে অতিমাত্রায় দেখায়: এটি ইতিমধ্যে line লাইনের প্রথম পরীক্ষায় আবৃত হয়েছে, কারণ অপরিজ্ঞাত! == ""।
gpvos

4

এখানে আমার:

String.format = function(tokenised){
        var args = arguments;
        return tokenised.replace(/{[0-9]}/g, function(matched){
            matched = matched.replace(/[{}]/g, "");
            return args[parseInt(matched)+1];             
        });
    }

বুলেট প্রুফ নয় তবে আপনি যদি এটি বুদ্ধিমানের সাথে ব্যবহার করেন তবে কাজ করে।


4

শেষের মরসুমটি পেরিয়ে যাওয়ার পথে কিন্তু আমি কেবলমাত্র দেওয়া উত্তরগুলি দেখছি এবং আমার টিউপেন্সের মূল্য আছে:

ব্যবহার:

var one = strFormat('"{0}" is not {1}', 'aalert', 'defined');
var two = strFormat('{0} {0} {1} {2}', 3.14, 'a{2}bc', 'foo');

পদ্ধতি:

function strFormat() {
    var args = Array.prototype.slice.call(arguments, 1);
    return arguments[0].replace(/\{(\d+)\}/g, function (match, index) {
        return args[index];
    });
}

ফলাফল:

"aalert" is not defined
3.14 3.14 a{2}bc foo

3

এখন আপনি টেম্পলেট লিটারালগুলি ব্যবহার করতে পারেন :

var w = "the Word";
var num1 = 2;
var num2 = 3;

var long_multiline_string = `This is very long
multiline templete string. Putting somthing here:
${w}
I can even use expresion interpolation:
Two add three = ${num1 + num2}
or use Tagged template literals
You need to enclose string with the back-tick (\` \`)`;

console.log(long_multiline_string);


3
আমি টেমপ্লেট লিটারাল সম্পর্কে উত্তেজিত ছিলাম যতক্ষণ না আমি দেখেছি যে তারা কেবল তখনই কাজ করে যখন প্রতিস্থাপনের ভেরিয়েবলগুলির সাথে স্ট্রিং সংজ্ঞায়িত করা হয়। আমার কাছে এগুলি তাদেরকে অনেক বেশি অকেজো করে তোলে; এক কারণে বা আমার অন্য বেশিরভাগ স্ট্রিং কোড থেকে পৃথকভাবে সংজ্ঞায়িত করা হয়েছে যা সেগুলি জনপ্রিয় করে / ব্যবহার করে।
পাথর

2

এখানে আমার সংস্করণ যা '{' থেকে পালাতে সক্ষম হয়েছে এবং এই অ-নিযুক্ত স্থানধারীদের পরিষ্কার করতে সক্ষম।

function getStringFormatPlaceHolderRegEx(placeHolderIndex) {
    return new RegExp('({)?\\{' + placeHolderIndex + '\\}(?!})', 'gm')
}

function cleanStringFormatResult(txt) {
    if (txt == null) return "";

    return txt.replace(getStringFormatPlaceHolderRegEx("\\d+"), "");
}

String.prototype.format = function () {
    var txt = this.toString();
    for (var i = 0; i < arguments.length; i++) {
        var exp = getStringFormatPlaceHolderRegEx(i);
        txt = txt.replace(exp, (arguments[i] == null ? "" : arguments[i]));
    }
    return cleanStringFormatResult(txt);
}
String.format = function () {
    var s = arguments[0];
    if (s == null) return "";

    for (var i = 0; i < arguments.length - 1; i++) {
        var reg = getStringFormatPlaceHolderRegEx(i);
        s = s.replace(reg, (arguments[i + 1] == null ? "" : arguments[i + 1]));
    }
    return cleanStringFormatResult(s);
}

2

নিম্নলিখিত উত্তরটি সম্ভবত সবচেয়ে দক্ষ তবে আর্গুমেন্টের 1 থেকে 1 ম্যাপিংয়ের জন্য কেবল উপযুক্ত থাকার ক্যাভ্যাট রয়েছে। এটি স্ট্রাকচারিংয়ের স্ট্রিংয়ের দ্রুততম উপায় ব্যবহার করে (স্ট্রিংবিল্ডারের অনুরূপ: স্ট্রিংগুলির অ্যারে, যুক্ত)। এটি আমার নিজস্ব কোড। সম্ভবত আরও ভাল বিভাজক প্রয়োজন।

String.format = function(str, args)
{
    var t = str.split('~');
    var sb = [t[0]];
    for(var i = 0; i < args.length; i++){
        sb.push(args[i]);
        sb.push(t[i+1]);
    }
    return sb.join("");
}

এটি ব্যবহার করুন:

alert(String.format("<a href='~'>~</a>", ["one", "two"]));

2
গৃহীত উত্তর হ'ল সেরা উত্তর। আমি একটি অনন্য উত্তর দিচ্ছি যা দৃশ্যে কার্যকর যেখানে আপনি সম্ভাব্য প্রতিটি দক্ষতার (দীর্ঘ লুপগুলি) গ্রাস করতে চান এবং আপনার কাছে 1: 1 টি ম্যাপিং রয়েছে gs আরও কার্যকর কুউজ রিপ্লেজ () এবং নতুন রেজেেক্স () সাথে রেগেক্স সম্পাদন করার সাথে অবশ্যই একক বিভাজন () এর চেয়ে বেশি সিপিইউ চক্র ব্যবহার করে।
স্কাইচান

-১ এর দরকার নেই। না, এটি ব্যাপকভাবে প্রযোজ্য নয়, তবে তিনি সঠিক, এটি কিছুটা দক্ষ হবে। এখন, লেখকের কাছে, একটি আর্কিটেকচার প্রশ্ন: এই ধরণের অপ্টিমাইজেশনের প্রয়োজন হবে এমন কোনও ধরণের অ্যাপ্লিকেশন ক্লায়েন্টের উপর এত বড় ডেটাসেটের সাথে কী আচরণ করবে?
মাইকেল ব্ল্যাকবার্ন

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

2

এটি DRY নীতি লঙ্ঘন করে তবে এটি একটি সংক্ষিপ্ত সমাধান:

var button = '<a href="{link}" class="btn">{text}</a>';
button = button.replace('{text}','Authorize on GitHub').replace('{link}', authorizeUrl);

0
<html>
<body>
<script type="text/javascript">
   var str="http://xyz.html?ID={0}&TId={1}&STId={2}&RId={3},14,480,3,38";
   document.write(FormatString(str));
   function FormatString(str) {
      var args = str.split(',');
      for (var i = 0; i < args.length; i++) {
         var reg = new RegExp("\\{" + i + "\\}", "");             
         args[0]=args[0].replace(reg, args [i+1]);
      }
      return args[0];
   }
</script>
</body>
</html>

এটি ইউআরআইয়ের জন্য ঠিক আছে, তবে সাধারণ ব্যবহারের জন্য, একটি স্ট্রিং থাকা ফর্ম্যাট উভয়ই থাকে এবং উপাদানগুলি খুব ভঙ্গুর। যদি আপনার স্ট্রিংয়ে কমা থাকে?
মাইকেল ব্ল্যাকবার্ন

0

আমি জোশ স্টোডোলার উত্তর কাজের উত্তর পেতে পারি না, তবে নিম্নলিখিতগুলি আমার পক্ষে কাজ করেছিল। এর স্পেসিফিকেশন নোট করুন prototype। (আইই, এফএফ, ক্রোম এবং সাফারিতে পরীক্ষিত)):

String.prototype.format = function() {
    var s = this;
    if(t.length - 1 != args.length){
        alert("String.format(): Incorrect number of arguments");
    }
    for (var i = 0; i < arguments.length; i++) {       
        var reg = new RegExp("\\{" + i + "\\}", "gm");
        s = s.replace(reg, arguments[i]);
    }
    return s;
}

sসত্যিই একটি হওয়া উচিত ক্লোন এর thisযাতে একটি ধ্বংসাত্মক পদ্ধতি নয়, বরং এটি সত্যিই প্রয়োজনীয় নয়।


এটি কোনও ধ্বংসাত্মক পদ্ধতি নয়। S গুলি যখন s.replace () এর রিটার্ন মান দিয়ে পুনরায় নিযুক্ত হয়, তখন এটি অচ্ছুত থাকে।
gpvos

0

উপরে অ্যাডামজেএলএভিভের দুর্দান্ত উত্তরটি প্রসারিত করা হচ্ছে , এখানে টাইপস্ক্রিপ্ট সংস্করণ রয়েছে:

// Extending String prototype
interface String {
    format(...params: any[]): string;
}

// Variable number of params, mimicking C# params keyword
// params type is set to any so consumer can pass number
// or string, might be a better way to constraint types to
// string and number only using generic?
String.prototype.format = function (...params: any[]) {
    var s = this,
        i = params.length;

    while (i--) {
        s = s.replace(new RegExp('\\{' + i + '\\}', 'gm'), params[i]);
    }

    return s;
};

0

আমার কাছে একটি প্লাঙ্কার রয়েছে যা এটিকে স্ট্রিং প্রোটোটাইপে যুক্ত করে: স্ট্রিং.ফর্ম্যাট এটি অন্যান্য কয়েকটি উদাহরণের মতো ছোট নয়, তবে আরও অনেক নমনীয়।

ব্যবহার সি # সংস্করণের অনুরূপ:

var str2 = "Meet you on {0}, ask for {1}";
var result2 = str2.format("Friday", "Suzy"); 
//result: Meet you on Friday, ask for Suzy
//NB: also accepts an array

এছাড়াও, নাম ও অবজেক্টের বৈশিষ্ট্য ব্যবহারের জন্য যোগ করা সমর্থন

var str1 = "Meet you on {day}, ask for {Person}";
var result1 = str1.format({day: "Thursday", person: "Frank"}); 
//result: Meet you on Thursday, ask for Frank

0

আপনি এই জাতীয় প্রতিস্থাপন সহ অ্যারে বন্ধ করতে পারেন।

var url = '/getElement/_/_/_'.replace(/_/g, (_ => this.ar[this.i++]).bind({ar: ["invoice", "id", 1337],i: 0}))
> '/getElement/invoice/id/1337

অথবা আপনি চেষ্টা করতে পারেন bind

'/getElement/_/_/_'.replace(/_/g, (function(_) {return this.ar[this.i++];}).bind({ar: ["invoice", "id", 1337],i: 0}))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.