s = 'hello %s, how are you doing' % (my_name)
कि आप इसे अजगर में कैसे करते हैं। आप इसे जावास्क्रिप्ट / नोड.जेएस में कैसे कर सकते हैं?
s = 'hello %s, how are you doing' % (my_name)
कि आप इसे अजगर में कैसे करते हैं। आप इसे जावास्क्रिप्ट / नोड.जेएस में कैसे कर सकते हैं?
जवाबों:
यदि आप कुछ ऐसा ही चाहते हैं, तो आप एक फंक्शन बना सकते हैं:
function parse(str) {
var args = [].slice.call(arguments, 1),
i = 0;
return str.replace(/%s/g, () => args[i++]);
}
उपयोग:
s = parse('hello %s, how are you doing', my_name);
यह केवल एक सरल उदाहरण है और विभिन्न प्रकार के डेटा प्रकारों (जैसे %i
, आदि) या भागने से ध्यान में नहीं रखता है %s
। लेकिन मुझे आशा है कि यह आपको कुछ विचार देगा। मुझे पूरा यकीन है कि वहाँ पुस्तकालय भी हैं जो इस तरह से एक समारोह प्रदान करते हैं।
Node.js के साथ v4
, आप ES6 के टेम्पलेट स्ट्रिंग्स का उपयोग कर सकते हैं
var my_name = 'John';
var s = `hello ${my_name}, how are you doing`;
console.log(s); // prints hello John, how are you doing
आपको `
इसके बजाय बैकटिक के भीतर स्ट्रिंग लपेटने की आवश्यकता है'
hello ${my_name}, how are you doing
और मैं विन्यास से स्ट्रिंग पढ़ने के बाद गतिशील रूप से चर असाइन करना चाहता हूं?
यदि आप ES6 का उपयोग कर रहे हैं, तो आपको टेम्पलेट शाब्दिक का उपयोग करना चाहिए।
//you can do this
let sentence = `My name is ${ user.name }. Nice to meet you.`
यहाँ और अधिक पढ़ें: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
चूंकि node.js
>4.0
यह ES6 मानक के साथ अधिक संगत है, जहां स्ट्रिंग हेरफेर में बहुत सुधार हुआ है।
मूल प्रश्न का उत्तर उतना ही सरल हो सकता है:
var s = `hello ${my_name}, how are you doing`;
// note: tilt ` instead of single quote '
जहां स्ट्रिंग कई पंक्तियों को फैला सकती है, यह टेम्पलेट्स या HTML / XML प्रक्रियाओं को काफी आसान बनाती है। इसके बारे में अधिक विवरण और अधिक उपयुक्तता : टेम्पलेट शाब्दिक शब्द mozilla.org पर स्ट्रिंग शाब्दिक हैं ।
use.format ऐसा करता है।
यह v0.5.3 का हिस्सा होगा और इसे इस तरह इस्तेमाल किया जा सकता है:
var uri = util.format('http%s://%s%s',
(useSSL?'s':''), apiBase, path||'/');
वो करें:
s = 'hello ' + my_name + ', how are you doing'
ES6 के साथ, आप यह भी कर सकते हैं:
s = `hello ${my_name}, how are you doing`
String.prototype
ES2015 टेम्पलेट शाब्दिकों का विस्तार या उपयोग करने के कुछ तरीके ।
var result = document.querySelector('#result');
// -----------------------------------------------------------------------------------
// Classic
String.prototype.format = String.prototype.format ||
function () {
var args = Array.prototype.slice.call(arguments);
var replacer = function (a){return args[a.substr(1)-1];};
return this.replace(/(\$\d+)/gm, replacer)
};
result.textContent =
'hello $1, $2'.format('[world]', '[how are you?]');
// ES2015#1
'use strict'
String.prototype.format2 = String.prototype.format2 ||
function(...merge) { return this.replace(/\$\d+/g, r => merge[r.slice(1)-1]); };
result.textContent += '\nHi there $1, $2'.format2('[sir]', '[I\'m fine, thnx]');
// ES2015#2: template literal
var merge = ['[good]', '[know]'];
result.textContent += `\nOk, ${merge[0]} to ${merge[1]}`;
<pre id="result"></pre>
जेएस में स्प्रिंटफ की कोशिश करें या आप इस जिस्ट का उपयोग कर सकते हैं
यदि आप node.js का उपयोग कर रहे हैं, तो कंसोल .log () पहले पैरामीटर के रूप में प्रारूप स्ट्रिंग लेता है:
console.log('count: %d', count);
console.log()
केवल स्वरूपित स्ट्रिंग को आउटपुट करता है STDOUT
। दूसरे शब्दों में, आप का नतीजा उपयोग नहीं कर सकतेcount: %d
const format = (...args) => args.shift().replace(/%([jsd])/g, x => x === '%j' ? JSON.stringify(args.shift()) : args.shift())
const name = 'Csaba'
const formatted = format('Hi %s, today is %s and your data is %j', name, Date(), {data: {country: 'Hungary', city: 'Budapest'}})
console.log(formatted)
मैंने एक फ़ंक्शन लिखा, जो समस्या को हल करता है।
पहला तर्क वह स्ट्रिंग है जिसे पैरामीटर बनाना चाहते थे। आपको अपना चर इस प्रारूप में "% s1,% s2, ...% s12" की तरह रखना चाहिए ।
अन्य तर्क उस स्ट्रिंग के लिए क्रमशः पैरामीटर हैं।
/***
* @example parameterizedString("my name is %s1 and surname is %s2", "John", "Doe");
* @return "my name is John and surname is Doe"
*
* @firstArgument {String} like "my name is %s1 and surname is %s2"
* @otherArguments {String | Number}
* @returns {String}
*/
const parameterizedString = (...args) => {
const str = args[0];
const params = args.filter((arg, index) => index !== 0);
if (!str) return "";
return str.replace(/%s[0-9]+/g, matchedStr => {
const variableIndex = matchedStr.replace("%s", "") - 1;
return params[variableIndex];
});
}
उदाहरण
parameterizedString("my name is %s1 and surname is %s2", "John", "Doe");
// returns "my name is John and surname is Doe"
parameterizedString("this%s1 %s2 %s3", " method", "sooo", "goood");
// returns "this method sooo goood"
यदि उस स्ट्रिंग में परिवर्तनशील स्थिति बदल जाती है, तो यह फ़ंक्शन फ़ंक्शन मापदंडों को बदले बिना भी इसका समर्थन करता है।
parameterizedString("i have %s2 %s1 and %s4 %s3.", "books", 5, "pencils", "6");
// returns "i have 5 books and 6 pencils."
var user = "your name";
var s = 'hello ' + user + ', how are you doing';
यहाँ Node.js. में एक बहु-पंक्ति स्ट्रिंग लिटरल उदाहरण है।
> let name = 'Fred'
> tm = `Dear ${name},
... This is to inform you, ${name}, that you are
... IN VIOLATION of Penal Code 64.302-4.
... Surrender yourself IMMEDIATELY!
... THIS MEANS YOU, ${name}!!!
...
... `
'Dear Fred,\nThis is to inform you, Fred, that you are\nIN VIOLATION of Penal Code 64.302-4.\nSurrender yourself IMMEDIATELY!\nTHIS MEANS YOU, Fred!!!\n\n'
console.log(tm)
Dear Fred,
This is to inform you, Fred, that you are
IN VIOLATION of Penal Code 64.302-4.
Surrender yourself IMMEDIATELY!
THIS MEANS YOU, Fred!!!
undefined
>
var s = 'hello ${my_name}, how are you doing';