/ / एक श्रृंखलाबद्ध फ़ंक्शन बनाएं जो विशेष वर्णों के एक छोटे से सेट को सामान्य करता है - जावास्क्रिप्ट, jquery, विशेष-वर्ण

एक श्रृंखलाबद्ध फ़ंक्शन बनाएं जो विशेष वर्णों के छोटे सेट को सामान्य करता है - जावास्क्रिप्ट, jquery, विशेष-वर्ण

मैं इस तरह कुछ काम करने के लिए, कुछ विशेष पात्रों के मौके को एक श्रृंखलाबद्ध समारोह के साथ परिवर्तित करना चाहता हूं:

>>> "Den här ån gör gott".normalizor().toUpperCase();

"DEN HAR AN GOR GOTT"

मैं केवल कुछ पात्रों को बदलने में दिलचस्पी रखता हूं:

å >> a
ä >> a
ö >> o

मुझे सही दिशा में लाने के लिए कोई मदद यहां बहुत सराहना की जाएगी!

शुद्ध जावास्क्रिप्ट या किसी पुस्तकालय का उपयोग कोई फर्क नहीं पड़ता।

उत्तर:

उत्तर № 1 के लिए 1

normalize एक बेहतर विधि नाम की तरह लगता है:

"Den här ån gör gott".normalize().toUpperCase();

String.prototype.normalize = function() {
return this.replace(/[åä]/g, "a")
.replace(/[ö]/g, "o");
}

जवाब के लिए 0 № 2

यदि आप इन विशेष पात्रों को रूपांतरित करना चाहते हैं, तो आप जर्मन के ASCII मानों को मैप कर सकते हैं (मैं "मानते हैं) वर्णों को सरल अंग्रेजी वाले लोगों के लिए।

उदाहरण के लिए, यहां आप मानचित्र बनाना चाहते हैं

ASCII 22 9 (å) ASCII 97 (ए)

ASCII 228 (ä) ASCII 97 (ए)

ASCII 246 (ö) ASCII 111 (ओ)

function normalizor(char) {
if (char.charCodeAt()===228 || char.charCodeAt()===229)
return String.fromCharCode(97);
//or simply return "a";
}

जवाब के लिए 0 № 3

Google ने मुझे यह समाधान दिया:

String.prototype.normalizor = function() {
var s, i, l, diacritics, chars;
s = this;
chars = ["A", "a", "E", "e", "I", "i", "O", "o", "U", "u", "N", "n", "C", "c"];
diacritics = [
/[300-306]/g, /[340-346]/g, // A, a
/[310-313]/g, /[350-353]/g, // E, e
/[314-317]/g, /[354-357]/g, // I, i
/[322-330]/g, /[362-370]/g, // O, o
/[331-334]/g, /[371-374]/g, // U, u
/[321]/g, /[361]/g, // N, n
/[307]/g, /[347]/g, // C, c
];
for (i = 0, l = diacritics.length; i < l; i++) {
s = s.replace(diacritics[i], chars[i]);
}
return s;
}

एसओ पर वही विषय: जावास्क्रिप्ट में diacritics बदलना.