जवाबों:
आपको एक एकल रेगेक्स के साथ स्ट्रिंग रिप्लेस फ़ंक्शन का उपयोग करना चाहिए। विशेष वर्णों की मानें, तो आपका मतलब कुछ भी है जो अक्षर नहीं है, यहां एक समाधान है:
const str = "abc's test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));
str.replace(/[^a-zA-Z0-9]/g, "")
str.replace(/[^a-zA-Z0-9 ]/g, "");
सूचना की आवश्यकता है कि 0-9 और] के बीच एक स्थान है
आप इसे उन पात्रों को निर्दिष्ट कर सकते हैं जिन्हें आप हटाना चाहते हैं:
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
वैकल्पिक रूप से, संख्याओं और अक्षरों को छोड़कर सभी वर्णों को बदलने के लिए, प्रयास करें:
string = string.replace(/[^a-zA-Z0-9]/g, '');
/[^a-zA-Z0-9]/g
()
और whitespaces
स्ट्रिंग में.text().replace(/[ ()]/g, '')
पहला समाधान किसी भी UTF-8 वर्णमाला के लिए काम नहीं करता है। (यह पाठ को काट देगा जैसे कि Привіт)। मैं एक फ़ंक्शन बनाने में कामयाब रहा हूं जो RegExp का उपयोग नहीं करता है और जावास्क्रिप्ट इंजन में अच्छे UTF-8 समर्थन का उपयोग करता है। विचार सरल है अगर एक प्रतीक अपरकेस में बराबर है और लोअरकेस एक विशेष चरित्र है। एकमात्र अपवाद व्हॉट्सएप के लिए बनाया गया है।
function removeSpecials(str) {
var lower = str.toLowerCase();
var upper = str.toUpperCase();
var res = "";
for(var i=0; i<lower.length; ++i) {
if(lower[i] != upper[i] || lower[i].trim() === '')
res += str[i];
}
return res;
}
अद्यतन: कृपया ध्यान दें, यह समाधान केवल उन भाषाओं के लिए काम करता है जहाँ छोटे और बड़े अक्षर हैं। चीनी जैसी भाषाओं में, यह काम नहीं करेगा।
अद्यतन 2: मैं मूल समाधान के लिए आया था जब मैं एक फजी खोज पर काम कर रहा था। यदि आप खोज कार्यक्षमता को लागू करने के लिए विशेष वर्णों को निकालने का प्रयास कर रहे हैं, तो भी बेहतर तरीका है। किसी भी लिप्यंतरण लाइब्रेरी का उपयोग करें जो आपको केवल लैटिन वर्णों से स्ट्रिंग का उत्पादन करेगी और फिर सरल रेगेक्सप विशेष वर्णों को हटाने के सभी जादू करेगा। (यह चीनी के लिए भी काम करेगा और आप भी Tromsø
== बनाकर साइड लाभ प्राप्त करेंगे Tromso
)।
मैं जावास्क्रिप्ट नहीं जानता, लेकिन क्या यह संभव नहीं है कि रेगेक्स का उपयोग किया जाए?
कुछ ऐसा [^\w\d\s]
होगा जो अंकों, वर्णों और व्हाट्सएप से कुछ भी मेल खाएगा। यह जावास्क्रिप्ट में सिंटैक्स खोजने के लिए सिर्फ एक सवाल होगा।
मैंने सीगुल के बहुत रचनात्मक समाधान की कोशिश की, लेकिन यह पाया कि यह संख्या विशेष पात्रों के रूप में भी व्यवहार करती है, जो मेरी आवश्यकताओं के अनुरूप नहीं थी। तो यहाँ है मेरा (विफल) सीगल के समाधान का ट्वीक ...
//return true if char is a number
function isNumber (text) {
if(text) {
var reg = new RegExp('[0-9]+$');
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '')) {
result += text[i];
}
}
return result;
}
return '';
}
reg
अपने पहले समारोह में घोषणा करना भूल गए ।
इस एक का उपयोग करने की कोशिश करो
var result= stringToReplace.replace(/[^\w\s]/gi, '')
यहाँ ^ कैरेट नकारात्मकता के लिए w है [a-zA-Z0-9_] शब्द अक्षर और अंतरिक्ष के लिए \ / s / [] वैश्विक के लिए gi
डॉट (?) को विशेष नहीं माना जा सकता है। मैंने मोज़फ़ेट एंड सीगल के जवाब में एक शर्त जोड़ी है:
function isNumber (text) {
reg = new RegExp('[0-9]+$');
if(text) {
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '') || (lower[i].trim() === '.')) {
result += text[i];
}
}
return result;
}
return '';
}
const input = `#if_1 $(PR_CONTRACT_END_DATE) == '23-09-2019' #
Test27919<alerts@imimobile.com> #elseif_1 $(PR_CONTRACT_START_DATE) == '20-09-2019' #
Sender539<rama.sns@gmail.com> #elseif_1 $(PR_ACCOUNT_ID) == '1234' #
AdestraSID<hello@imimobile.co> #else_1#Test27919<alerts@imimobile.com>#endif_1#`;
const replaceString = input.split('$(').join('->').split(')').join('<-');
console.log(replaceString.match(/(?<=->).*?(?=<-)/g));
जिनके विशेष वर्ण आप एक स्ट्रिंग से निकालना चाहते हैं, उनकी एक सूची तैयार करें और फिर उपयोगकर्ता जावास्क्रिप्ट को सभी विशेष वर्णों को हटाने के लिए फ़ंक्शन बदलें।
var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));
या आप पूरे स्ट्रिंग के लिए लूप चला सकते हैं और ASCII कोड के साथ एकल एकल वर्ण की तुलना कर सकते हैं और एक नया स्ट्रिंग पुनः प्राप्त कर सकते हैं।