javascript - बिना किसी समझौते के जावास्क्रिप्ट में तारों में चर को कैसे विभाजित करें?




string variables (6)

मैं PHP में जानता हूं हम ऐसा कुछ कर सकते हैं:

$hello = "foo";
$my_string = "I pity the $hello";

आउटपुट: "I pity the foo"

मैं सोच रहा था कि जावास्क्रिप्ट में भी यही बात संभव है। Concatenation का उपयोग किए बिना तारों के अंदर चर का उपयोग करना - यह लिखने के लिए और अधिक संक्षिप्त और सुरुचिपूर्ण लग रहा है।


अच्छा आप यह कर सकते हैं, लेकिन यह सामान्य esp नहीं है

'I pity the $fool'.replace('$fool', 'fool')

आप आसानी से एक ऐसा फ़ंक्शन लिख सकते हैं जो आपको समझदारी से करता है यदि आपको वास्तव में आवश्यकता होती है


इस प्रकार के टेम्पलेटिंग करने के लिए आप इस जावास्क्रिप्ट फ़ंक्शन का उपयोग कर सकते हैं। पूरी लाइब्रेरी को शामिल करने की आवश्यकता नहीं है।

function createStringFromTemplate(template, variables) {
    return template.replace(new RegExp("\{([^\{]+)\}", "g"), function(_unused, varName){
        return variables[varName];
    });
}

createStringFromTemplate(
    "I would like to receive email updates from {list_name} {var1} {var2} {var3}.",
    {
        list_name : "this store",
        var1      : "FOO",
        var2      : "BAR",
        var3      : "BAZ"
    }
);

आउटपुट : "I would like to receive email updates from this store FOO BAR BAZ."

String.replace () फ़ंक्शन के लिए एक तर्क के रूप में फ़ंक्शन का उपयोग ECMAScript v3 spec का हिस्सा था। अधिक जानकारी के लिए यह SO उत्तर देखें।


फ़ायरफ़ॉक्स से पहले 34 / क्रोम 41 / सफारी 9 / माइक्रोसॉफ्ट एज, नहीं, जावास्क्रिप्ट में यह संभव नहीं था। आपको इसका सहारा लेना होगा:

var hello = "foo";
var my_string = "I pity the " + hello;

फ़ायरफ़ॉक्स से पहले 34 / क्रोम 41 / सफारी 9 / माइक्रोसॉफ्ट एज, नहीं। यद्यपि आप वहां आधा रास्ते पाने के लिए जावास्क्रिप्ट के लिए sprintf कोशिश कर सकते हैं:

var hello = "foo";
var my_string = sprintf("I pity the %s", hello);

यदि आप microtemplating के लिए इंटरपोलेशन करने की कोशिश कर रहे हैं, तो मुझे उस उद्देश्य के लिए Mustache.js पसंद है।


यदि आप कॉफीस्क्रिप्ट लिखना पसंद करते हैं तो आप कर सकते हैं:

hello = "foo"
my_string = "I pity the #{hello}"

कॉफीस्क्रिप्ट वास्तव में जावास्क्रिप्ट है, लेकिन एक बेहतर वाक्यविन्यास के साथ।

कॉफीस्क्रिप्ट के एक सिंहावलोकन के लिए इस शुरुआती गाइड की जांच करें।






string-interpolation