2016-02-07 12 views
5
function maskify(cc) { 
    var dd = cc.toString(); 
    var hash = dd.replace((/./g), '#'); 
    for (var i = (hash.length - 4); i < hash.length; i++) { 
     hash[i] = dd[i]; 
    } 
    return hash; 
} 

के लिए मैं पिछले 4. यह क्यों काम नहीं कर रहा के अलावा # के साथ सभी वर्ण को बदलने के लिए कोशिश कर रहा हूँ # के साथ सभी वर्ण बदलें,?को छोड़कर पिछले 4

उत्तर

0

एक दिए गए इंडेक्स पर एक स्ट्रिंग में एक चरित्र बदलने के लिए, hash[i] = dd[i] काम नहीं करता। स्ट्रिंग्स जावास्क्रिप्ट में अडिग हैं। इस पर कुछ सलाह के लिए How do I replace a character at a particular index in JavaScript? देखें।

13

आप इस तरह यह कर सकता है:

dd.replace(/.(?=.{4,}$)/g, '#'); 

var dd = 'Hello dude'; 
 
var replaced = dd.replace(/.(?=.{4,}$)/g, '#'); 
 
document.write(replaced);

+0

आप कैसे इस regex काम की व्याख्या कर सकते? –

+0

@LukasDavid, यह मूल रूप से सभी पात्रों जहां वहाँ से अधिक 4 अक्षर बाद में बदल देता है। इसलिए, जब स्ट्रिंग के अंत से पहले 4 अक्षर के लिए मिलता है, regex असफल हो जायेगी और उन अक्षरों की जगह नहीं होगी। – MinusFour

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