मैं एक स्ट्रिंग से संख्याएँ निकालना चाहता हूँ:
questionText = "1 ding ?"
मैं संख्या 1संख्या और प्रश्न चिह्न को बदलना चाहता हूं ?। यह कोई भी संख्या हो सकती है। मैंने निम्नलिखित गैर-कार्य कोड की कोशिश की।
questionText.replace(/[0-9]/g, '');
मैं एक स्ट्रिंग से संख्याएँ निकालना चाहता हूँ:
questionText = "1 ding ?"
मैं संख्या 1संख्या और प्रश्न चिह्न को बदलना चाहता हूं ?। यह कोई भी संख्या हो सकती है। मैंने निम्नलिखित गैर-कार्य कोड की कोशिश की।
questionText.replace(/[0-9]/g, '');
जवाबों:
बहुत करीब, कोशिश:
questionText = questionText.replace(/[0-9]/g, '');
replaceमौजूदा स्ट्रिंग पर काम नहीं करता है, यह एक नया रिटर्न देता है। यदि आप इसका उपयोग करना चाहते हैं, तो आपको इसे रखने की आवश्यकता है!
इसी तरह, आप एक नए चर का उपयोग कर सकते हैं:
var withNoDigits = questionText.replace(/[0-9]/g, '');
एक बार में अंकों के पूरे ब्लॉक निकालने के लिए एक आखिरी ट्रिक, लेकिन वह बहुत दूर जा सकती है:
questionText = questionText.replace(/\d+/g, '');
\?,\*, उनसे बचना याद रखें , लेकिन आप शायद चाहते हैं /[?*]/g। जब आपके पास एक नया सवाल पूछने के लिए स्वतंत्र महसूस करें !
स्ट्रिंग अपरिवर्तनीय है , इसीलिए questionText.replace(/[0-9]/g, '');यह अपने आप में काम करता है , लेकिन यह सवालटेक्ट-स्ट्रिंग को नहीं बदलता है। आपको दूसरे स्ट्रिंग-वेरिएबल को रिप्लेस करने या फिर खुद से सवाल करने का रिजल्ट असाइन करना होगा।
var cleanedQuestionText = questionText.replace(/[0-9]/g, '');
या 1 गो में ( \d+काबी का जवाब देखें)
questionText = ("1 ding ?").replace(/\d+/g,'');
और यदि आप उस स्थान पर अग्रणी (और अनुगामी) स्थान को ट्रिम करना चाहते हैं, तो:
questionText = ("1 ding ?").replace(/\d+|^\s+|\s+$/g,'');
/gसभी regexes पर मत भूलना - जावास्क्रिप्ट इस तरह से कष्टप्रद है:)
आप उल्लेखनीय रूप से करीब हैं।
यहाँ प्रश्न में आपके द्वारा लिखा गया कोड है:
questionText.replace(/[0-9]/g, '');
आपके द्वारा लिखा गया कोड वास्तव में प्रश्नचिन्ह चर को देखता है, और आउटपुट का उत्पादन करता है जो मूल स्ट्रिंग है, लेकिन अंकों के साथ खाली स्ट्रिंग को प्रतिस्थापित किया जाता है।
हालाँकि, यह इसे स्वचालित रूप से मूल चर पर वापस नहीं भेजता है। आपको यह निर्दिष्ट करने की आवश्यकता है कि इसे क्या निर्दिष्ट करना है:
questionText = questionText.replace(/[0-9]/g, '');
बस जोड़ना चाहते हैं क्योंकि यह किसी के लिए ब्याज हो सकता है, कि आप समस्या के बारे में दूसरे तरीके से भी सोच सकते हैं। मुझे यकीन नहीं है कि अगर यहां रुचि है, लेकिन मुझे यह प्रासंगिक लगता है।
दूसरे तरीके से मेरा मतलब यह है कि "ऐसी किसी भी चीज़ को छीनो जो मैं नहीं खोज रहा हूँ, अर्थात यदि आप केवल 'डिंग' चाहते हैं तो आप कह सकते हैं:
var strippedText = ("1 ding?")। प्रतिस्थापित करना (/ [^ ^ a-zA-Z] / g, '');
जिसका मूल रूप से मतलब है "कुछ भी हटा दें जो nog a, b, c, d .... Z (कोई अक्षर) है।
एक माध्यमिक विकल्प कुछ अंकों के साथ गैर-अंकों का मिलान और वापसी करना होगा,
/\D+/g
जो प्रश्न में उस विशिष्ट स्ट्रिंग के लिए काम करेगा 1 ding ?।
function non_digit_string(str) {
const regex = /\D+/g;
let m;
non_digit_arr = [];
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
m.forEach((match, groupIndex) => {
if (match.trim() != '') {
non_digit_arr.push(match.trim());
}
});
}
return non_digit_arr;
}
const str = `1 ding ? 124
12 ding ?
123 ding ? 123`;
console.log(non_digit_string(str));
यदि आप अभिव्यक्ति को सरल / संशोधित / संशोधित करना चाहते हैं, तो इसे regex101.com के ऊपरी दाएँ पैनल पर समझाया गया है । यदि आप चाहें, तो आप इस लिंक में भी देख सकते हैं कि यह कुछ नमूना आदानों के साथ कैसे मेल खाता है।
jex.im नियमित अभिव्यक्ति की कल्पना करता है:
यह किया जा सकता है regexजिसके बिना अधिक कुशल है:
var questionText = "1 ding ?"
var index = 0;
var num = "";
do
{
num += questionText[index];
} while (questionText[++index] >= "0" && questionText[index] <= "9");
questionText = questionText.substring(num.length);
और एक बोनस के रूप में, यह संख्या को भी संग्रहीत करता है, जो कुछ लोगों के लिए उपयोगी हो सकता है।
आप .match && join () विधियों का उपयोग कर सकते हैं। .match () एक सरणी देता है और .join () एक स्ट्रिंग बनाता है
function digitsBeGone(str){
return str.match(/\D/g).join('')
}