2009-08-06 10 views
8

मेरा जेएस "स्ट्रिंग()" का उपयोग करके जेएसओएन को कुछ स्ट्रिंग डेटा बचाता है, लेकिन आउटपुट जेएसओएन स्ट्रिंग को देखकर मैं बहुत सारे अजीब वर्ण (चाबियाँ से बाहर) देखता हूं, जैसे कि एनयूएलएल और अन्य खराब वर्ण। अब मेरे पास इन "खराब" वर्णों की एक सूची नहीं है, इसलिए मैं उन्हें अपने स्ट्रिंग डेटा से कैसे हटा सकता हूं?मैं जेएस में स्ट्रिंग से खराब वर्ण कैसे हटा सकता हूं?

+1

उन अजीब पात्रों का क्या कारण बनता है? मूल कारण की जांच करना और इसे ठीक करना बेहतर होगा। श्वेतसूची सुझाव के लिए –

उत्तर

8

यह अच्छा होगा यदि वहाँ उस के लिए एक सरल रेगुलर एक्सप्रेशन से था हो सकता है, लेकिन मुझे नहीं लगता है है। जो मैं समझता हूं, उससे आप अभी भी% $ # @ आदि जैसे पात्रों को अनुमति देना चाहते हैं, लेकिन टैब और नल जैसे अन्य oddball वर्णों को अस्वीकार करना चाहते हैं। यदि यह सही है, मेरा मानना ​​है कि सबसे आसान तरीका है पाश के लिए प्रत्येक चरित्र होगा और चार कोड का मूल्यांकन ...

function stripCrap(val) { 
    var result = ''; 

    for(var i = 0, l = val.length; i < l; i++) { 
    var s = val[i]; 
    if(String.toCharCode(s) > 31) 
     result += s; 
    } 

    return result; 
} 

तुम सच में रेगुलर एक्सप्रेशन से उपयोग करना चाहते हैं, एक श्वेत सूची दृष्टिकोण आवश्यक लगता है। यह सभी संख्याओं, अक्षरों और एक स्थान की अनुमति देगा ...

val = val.replace(/[^a-z 0-9]+/gi,''); 
+0

बहुत बहुत धन्यवाद। इस समस्या के लिए इस तरह का एक अच्छा समाधान – Mansiemans

+0

मुझे त्रुटि मिल रही है: 'TypeError: ऑब्जेक्ट फ़ंक्शन स्ट्रिंग() {[मूल कोड]} क्रोम – nnyby

+0

में' toCharCode'' का कोई तरीका नहीं है, मुझे यह काम मिल गया है, बस उस पंक्ति को बदलें: 'अगर (s.charCodeAt (0)> 31) {' – nnyby

2

आप "अच्छा" वर्ण की एक सूची है, तो आप एक regex जो अपनी सूची में किसी भी चरित्र से मेल खाता है नहीं बना सकते हैं, और कुछ भी पट्टी यह मेल खाता है - उदाहरण के लिए, निम्नलिखित regex कुछ भी नहीं पत्र से मेल खाता है "एक", "क्ष", या "Z":

/[^aqz]+/ig 
संबंधित मुद्दे

 संबंधित मुद्दे