अगर जावास्क्रिप्ट में एक अक्षर है तो कैसे जांचें?


94

मैं एक जावास्क्रिप्ट स्ट्रिंग में एक चरित्र निकाल रहा हूँ:

var first = str.charAt(0);

और मैं यह जांचना चाहूंगा कि क्या यह एक पत्र है। अजीब तरह से, ऐसा नहीं लगता है कि जावास्क्रिप्ट में ऐसी कार्यक्षमता मौजूद है। कम से कम मुझे यह नहीं मिल रहा है।

मैं इसका परीक्षण कैसे कर सकता हूं?


4
एक संख्या बनाएं और किसके खिलाफ परीक्षण करें NaN? या सिर्फ isNan(first)मुझे लगता है।
मार्क

6
@Marc यदि यह चरित्र '-' उदाहरण के लिए, आपके परीक्षण से यह संकेत नहीं मिलेगा कि यह एक पत्र है ...
Jérôme Verstrynge

2
"पत्र" को परिभाषित करें? केवल अंग्रेजी अल्फा, या कुछ और? क्या आप "ब्लैकलिस्ट" या "व्हाइटलिस्ट" करना चाहते हैं?
वेस्ले मर्च

3
@JVerstry हर कोई जावा को नहीं जानता। क्या आप हमें यह नहीं बता सकते हैं कि किन वर्णों को अनुमति दी जाएगी?
पीएएचए

1
मैं बहुत सारे लोगों को यहां जेएस जावा कहता हूं। जेएस और जावा एक ही चीज नहीं हैं, करीब भी नहीं। एक अनिवार्य रूप से एक खिलौना है, दूसरा वेबसाइटों को बनाने के लिए है।
इयान वाइज

जवाबों:


15

मेरा मानना ​​है कि इस प्लगइन में आपके द्वारा मांगी गई क्षमताएं हैं: http://xregexp.com/plugins/ (github लिंक: https://github.com/slevithan/xregexp )

इसके साथ आप बस सभी यूनिकोड अक्षरों के साथ मेल कर सकते हैं \p{L}

इस स्रोत फ़ाइल का हेडर पढ़ें कि यह किन श्रेणियों का समर्थन करती है: http://xregexp.com/plugins/xregexp-unicode-categories.js


1
क्या आपने अपने द्वारा काम की गई परियोजनाओं पर इस प्लगइन का उपयोग करने का अनुभव प्राप्त किया है? (बस सोच रहा था कि यह पुस्तकालय कितना विश्वसनीय है)
एड्रियन बन

डाउनवोटिंग के रूप में यह निश्चित रूप से 2019 के लिए एक खराब जवाब है
पीटर

5
क्या आप 2019 के लिए उपयुक्त विचार कर सकते हैं? जब तक अन्य यूनिकोड वर्णों के साथ अन्य समाधान काम करता है, मैं अपने उत्तर को संपादित करने के लिए एक लिंक जोड़ दूंगा।
bezmax

146

मैं नहीं मानता कि उसके लिए कोई अंतर्निहित कार्य है। लेकिन रेगेक्स के साथ लिखना काफी आसान है

function isLetter(str) {
  return str.length === 1 && str.match(/[a-z]/i);
}

50
कोड केवल परीक्षण करता है कि क्या चरित्र ए से जेड तक के मूल पत्र में से एक है (केवल उन पत्रों का उपयोग करके बहुत कम भाषाएँ लिखी जाती हैं)। यह उल्लेखित जावा फ़ंक्शन से बहुत अलग है।
जुक्का के। कोर्पेला

10
आप अभी भी एक regex का उपयोग कर सकते हैं और बस अधिक विवरण जोड़ सकते हैं जैसे आपको इसकी आवश्यकता है: str.match (/ [AZ | az | ü | é] / i); // आदि
एली

शायद यह काम करता है? var char=str.toLowerCase(); return (char.length==1 && char>='a' && char<='z')
यिबो यांग

2
@YiboYang - nope, ऊपर दिए गए jsbin लिंक पर गया, उसे आपने बदल दिया और उसे चला दिया, और यह पाया: "क्या 'u' अक्षर है?" 'एक पत्र है? गलत "आपके कोड के साथ।
जुलिक्स

3
यह ध्यान दिया जाना चाहिए कि यह वास्तव में सच नहीं है || झूठी उम्मीद के रूप में एक हो सकता है। यदि straz से कोई मान है तो वह मान लौटाता है। अन्यथा यह अशक्त हो जाता है। यदि आपको इसे सही / गलत उपयोग करने की आवश्यकता है। isLetter: function (str) { if (str.length !== 1 && str.match(/[a-z]/i)) { return true; } return false; },
Regis

107

उन विशेष पात्रों के संबंध में /[a-zA-Z]/.test(c), जैसे कि सरल जाँच द्वारा ध्यान नहीं दिया जा रहा है , यह ECMAScript केस ट्रांसफ़ॉर्मेशन ( toUpperCase) का लाभ उठाने के लिए फायदेमंद हो सकता है । यह कुछ विदेशी अक्षर के गैर-एएससीआईआई यूनिकोड चरित्र वर्गों को ध्यान में रखेगा।

function isLetter(c) {
  return c.toLowerCase() != c.toUpperCase();
}

नोट: यह समाधान केवल अधिकांश लैटिन, ग्रीक, अर्मेनियाई और सिरिलिक लिपियों के लिए काम करेगा। यह चीनी, जापानी, अरबी, हिब्रू और अधिकांश अन्य लिपियों के लिए काम नहीं करेगा।


15
चालाक। लेकिन मेरी बहुत सीमित समझ के आधार पर, यह उन अल्फाबेट्स के साथ काम नहीं करता है जिनमें ऊपरी और निचले मामले नहीं हैं, जैसे चीनी या जापानी
नोट्रे

3
महान (और चतुर) कोड। सभी लैटिन आधारित अक्षर के साथ काम करता है।
fvlinden

1
व्यक्तिगत रूप से मुझे इस तरह से काम करना पसंद है क्योंकि रेगेक्स फ़ंक्शंस की तुलना में इसे
देखना

3
शानदार समाधान। C = '1a' के मामले में, बस अपने स्ट्रिंग को ऐरे और लूप में विभाजित करें, उदाहरण के लिए, `function isLetters (arrest) {for (var i = 0; i <arr.length; i ++) {if (arr [i]]। toLowerCase ()! = arrest [i] .toUpperCase ()) {} और {{असत्य वापस; }} सच्ची वापसी; } `
रोनी रोइस्टन

5
एक /[a-z]/iपैटर्न के आधार पर समाधान की तुलना में , यह चाल लैटिन वर्णों की पूरी श्रृंखला को स्वीकार करेगी। एक पूर्ण लैटिन यूनिकोड ऊपरी-निचले मानचित्रण वाले अन्य समाधान की तुलना में, आप कोड आकार में 99.2% बचाते हैं। इस समाधान को "गलत" कहना भ्रामक है, क्योंकि यह आपकी समस्या पर निर्भर करता है। यदि आपका दायरा लैटिन वर्ण सेट है, तो इसे हल करने के लिए एक दुबला और सुरुचिपूर्ण तरीका है।
फ़िलिप

28
if( char.toUpperCase() != char.toLowerCase() ) 

केवल पत्र के मामले में सही लौटेगा

जैसा कि नीचे टिप्पणी में बताया गया है, यदि आपका चरित्र गैर अंग्रेजी, उच्च असिसी या डबल बाइट श्रेणी है तो आपको कोड बिंदु के लिए चेक जोड़ने की आवश्यकता है।

if( char.toUpperCase() != char.toLowerCase() || char.codePointAt(0) > 127 )

1
बस जुड़वापन जोड़ने के लिए, अगर इसे एक फ़ंक्शन में बदल दिया जाए, तो एक चेक जोड़ें यह स्ट्रिंग है और लंबाई को एक होने के लिए लागू करें या सुनिश्चित करें कि लंबाई एक है। 1aउदाहरण के लिए रोकना है।
प्रकाशित

1
@AnchovyLegend यह काम करता है क्योंकि संख्याओं, विराम चिह्नों और अन्य गैर-अक्षर वर्णों के अपरकेस और लोअरकेस संस्करण नहीं हैं। दूसरे शब्दों में, उनमें से ऊपरी और निचला मामला समान होगा, जबकि अक्षरों के ऊपरी और निचले मामले अलग-अलग होंगे। व्यक्तिगत रूप से, मुझे यह तकनीक पसंद है क्योंकि यह भाषा से स्वतंत्र है (यह विशेषांक वाली भाषाओं के साथ काम करती है)। मैंने कोई बेंचमार्क नहीं चलाया है, लेकिन मुझे लगता है कि यह एक रेगीक्स के निर्माण की तुलना में अधिक कुशल है। (लेकिन मैं गलत हो सकता है, क्योंकि रेगेक्स आश्चर्यजनक रूप से तेज़ हैं।)
डैनियल 'डांग' ग्रिफ़िथ

2
यह उन लिपियों के लिए विफल होता है जो चीनी की तरह ऊपरी और निचले मामले में भेदभाव नहीं करती हैं।
माइकल श्मिट

@MichaelSchmid, हम कोड पॉइंट चेक कह सकते हैं कि "a" .codePointAt (0) .toString (16)। कोड बिंदु 127 से अधिक होना चाहिए।
सुमेर

2
@ सुमेर, वह मदद क्यों करेगा? सिर्फ इसलिए कि कोड बिंदु 127 से ऊपर है इसका मतलब यह नहीं है कि यह एक पत्र है।
माइकल श्मिट

6

ES6 यूनिकोड-जागरूक नियमित अभिव्यक्ति का समर्थन करता है।

RegExp(/^\p{L}/,'u').test(str)

यह सभी अक्षर के लिए काम करता है।

दुर्भाग्य से, फ़ायरफ़ॉक्स में एक बग है (संस्करण 78 में तय किया जाएगा) जो इसे सार्वभौमिक रूप से उपयोग करने से रोकता है। लेकिन अगर आप अपने रनटाइम वातावरण को नियंत्रित कर सकते हैं और यह इसका समर्थन करता है (जैसे Node.js), तो यह एक सीधा, व्यापक समाधान है।

Atlernatively, XRegExp सभी ब्राउज़रों को आधुनिक नियमित अभिव्यक्ति की एक पॉलीफ़िल प्रदान करता है।


4

ASCII कोड का उपयोग कैसे करें?

let n = str.charCodeAt(0);
let strStartsWithALetter = (n >= 65 && n < 91) || (n >= 97 && n < 123);

1
पूरी तरह से असंभव मामले के लिए काम करता है कि आप केवल अंग्रेजी ग्रंथों को संसाधित कर रहे हैं। (एक धारणा जो लगभग हर व्यवस्था के लिए गलत है।)
माइकल श्मिट

जब पात्रों को पढ़ना आसान होता है (जैसा कि यहां मामला है), Ascii या यूनिकोड कोड (जैसे 'ए' के ​​बजाय 65) लिखना बुरा अभ्यास है, क्योंकि यह अपठनीय है। इसे ठीक से लिखने के लिए अन्य उत्तर देखें।
फिलिप-आंद्रे लोरिन

2

यह समाधान के साथ काम करता विशेष वर्ण भी उदाहरण के लिए é, è, ê, ü, ö,à

2 चरण:

  1. इस उत्तर के आधार पर, उच्चारण निकालें : जावास्क्रिप्ट में एक स्ट्रिंग में लहजे / diacritics निकालें
  2. अगर zge वर्ण या यूनिकोड (आपकी पसंद) का उपयोग करके जाँच करें

मेरे समाधान का लाइव डेमो:

  1. वैश्विक कार्यों का उपयोग करना
  2. जावास्क्रिप्ट मॉड्यूल पैटर्न का उपयोग करना

नोट : मैंने उस समाधान को पोस्ट किया है जो वैश्विक कार्यों का उपयोग करता है क्योंकि यह समझने में सबसे सरल है। लेकिन "जावास्क्रिप्ट मॉड्यूल पैटर्न" में देखें यदि आप बेहतर कोड चाहते हैं (क्लीनर, बनाए रखने के लिए आसान और विस्तार करना), तो देखें प्रभावशालीwebs.com/my-current-javascript-design-pattern और यह भी YouTube वीडियो (पॉल आयरिश द्वारा प्रस्तुति)।

var defaultDiacriticsRemovalap = [
    {'base':'A', 'letters':'\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'},
    {'base':'AA','letters':'\uA732'},
    {'base':'AE','letters':'\u00C6\u01FC\u01E2'},
    {'base':'AO','letters':'\uA734'},
    {'base':'AU','letters':'\uA736'},
    {'base':'AV','letters':'\uA738\uA73A'},
    {'base':'AY','letters':'\uA73C'},
    {'base':'B', 'letters':'\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181'},
    {'base':'C', 'letters':'\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E'},
    {'base':'D', 'letters':'\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779'},
    {'base':'DZ','letters':'\u01F1\u01C4'},
    {'base':'Dz','letters':'\u01F2\u01C5'},
    {'base':'E', 'letters':'\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E'},
    {'base':'F', 'letters':'\u0046\u24BB\uFF26\u1E1E\u0191\uA77B'},
    {'base':'G', 'letters':'\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E'},
    {'base':'H', 'letters':'\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'},
    {'base':'I', 'letters':'\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'},
    {'base':'J', 'letters':'\u004A\u24BF\uFF2A\u0134\u0248'},
    {'base':'K', 'letters':'\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'},
    {'base':'L', 'letters':'\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'},
    {'base':'LJ','letters':'\u01C7'},
    {'base':'Lj','letters':'\u01C8'},
    {'base':'M', 'letters':'\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C'},
    {'base':'N', 'letters':'\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4'},
    {'base':'NJ','letters':'\u01CA'},
    {'base':'Nj','letters':'\u01CB'},
    {'base':'O', 'letters':'\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C'},
    {'base':'OI','letters':'\u01A2'},
    {'base':'OO','letters':'\uA74E'},
    {'base':'OU','letters':'\u0222'},
    {'base':'OE','letters':'\u008C\u0152'},
    {'base':'oe','letters':'\u009C\u0153'},
    {'base':'P', 'letters':'\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'},
    {'base':'Q', 'letters':'\u0051\u24C6\uFF31\uA756\uA758\u024A'},
    {'base':'R', 'letters':'\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'},
    {'base':'S', 'letters':'\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'},
    {'base':'T', 'letters':'\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'},
    {'base':'TZ','letters':'\uA728'},
    {'base':'U', 'letters':'\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'},
    {'base':'V', 'letters':'\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'},
    {'base':'VY','letters':'\uA760'},
    {'base':'W', 'letters':'\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'},
    {'base':'X', 'letters':'\u0058\u24CD\uFF38\u1E8A\u1E8C'},
    {'base':'Y', 'letters':'\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'},
    {'base':'Z', 'letters':'\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'},
    {'base':'a', 'letters':'\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250'},
    {'base':'aa','letters':'\uA733'},
    {'base':'ae','letters':'\u00E6\u01FD\u01E3'},
    {'base':'ao','letters':'\uA735'},
    {'base':'au','letters':'\uA737'},
    {'base':'av','letters':'\uA739\uA73B'},
    {'base':'ay','letters':'\uA73D'},
    {'base':'b', 'letters':'\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253'},
    {'base':'c', 'letters':'\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'},
    {'base':'d', 'letters':'\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A'},
    {'base':'dz','letters':'\u01F3\u01C6'},
    {'base':'e', 'letters':'\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD'},
    {'base':'f', 'letters':'\u0066\u24D5\uFF46\u1E1F\u0192\uA77C'},
    {'base':'g', 'letters':'\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F'},
    {'base':'h', 'letters':'\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'},
    {'base':'hv','letters':'\u0195'},
    {'base':'i', 'letters':'\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'},
    {'base':'j', 'letters':'\u006A\u24D9\uFF4A\u0135\u01F0\u0249'},
    {'base':'k', 'letters':'\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'},
    {'base':'l', 'letters':'\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747'},
    {'base':'lj','letters':'\u01C9'},
    {'base':'m', 'letters':'\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'},
    {'base':'n', 'letters':'\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5'},
    {'base':'nj','letters':'\u01CC'},
    {'base':'o', 'letters':'\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275'},
    {'base':'oi','letters':'\u01A3'},
    {'base':'ou','letters':'\u0223'},
    {'base':'oo','letters':'\uA74F'},
    {'base':'p','letters':'\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755'},
    {'base':'q','letters':'\u0071\u24E0\uFF51\u024B\uA757\uA759'},
    {'base':'r','letters':'\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'},
    {'base':'s','letters':'\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B'},
    {'base':'t','letters':'\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'},
    {'base':'tz','letters':'\uA729'},
    {'base':'u','letters': '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'},
    {'base':'v','letters':'\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'},
    {'base':'vy','letters':'\uA761'},
    {'base':'w','letters':'\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'},
    {'base':'x','letters':'\u0078\u24E7\uFF58\u1E8B\u1E8D'},
    {'base':'y','letters':'\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'},
    {'base':'z','letters':'\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'}
];

var diacriticsMap = {};
for (var i=0; i < defaultDiacriticsRemovalap.length; i++){
    var letters = defaultDiacriticsRemovalap[i].letters.split("");
    for (var j=0; j < letters.length ; j++){
        diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;
    }
}

function removeDiacriticFromChar (char) {
    return diacriticsMap[char] || char; 
}


/*
 *  [1] Remove the accent, based on answer of /programming/990904/javascript-remove-accents-in-strings
 *  [2] Check if a to z character, using regex or unicode (your choice, here using regex)
 *
 */
function isLetter(char) {
  var charWithoutAccent = removeDiacriticFromChar(char);  /* [1] */
  return charWithoutAccent.match(/[a-z]/i);               /* [2] */
}

console.log( "is 'u' is a letter? " + (isLetter('u') ? 'true' : 'false') );
console.log( "is 'ü' is a letter? " + (isLetter('ü') ? 'true' : 'false') );
console.log( "is 'à' is a letter? " + (isLetter('à') ? 'true' : 'false') );
console.log( "is 'ö' is a letter? " + (isLetter('ö') ? 'true' : 'false') );
console.log( "is 'ù' is a letter? " + (isLetter('ù') ? 'true' : 'false') );
console.log( "is 'é' is a letter? " + (isLetter('é') ? 'true' : 'false') );
console.log( "is 'é' is a letter? " + (isLetter('é') ? 'true' : 'false') );
console.log( "is 'ê' is a letter? " + (isLetter('ê') ? 'true' : 'false') );


6
यह चीनी या जापानी पात्रों के साथ काम नहीं करता है
Notre

9
यह आकाश के नीले होने की तरह है
एड्रिन बी

1

मैं यहाँ पोस्ट कर रहा हूँ क्योंकि मैं एक नया सवाल पोस्ट नहीं करना चाहता था। यह मानते हुए कि कोड में कोई एकल वर्ण घोषणाएं नहीं हैं, आप त्रुटि का कारण बनने के लिए चरित्र के प्रकार () की जांच कर सकते हैं। कुछ इस तरह:

function testForLetter(character) {
  try {
    //Variable declarations can't start with digits or operators
    //If no error is thrown check for dollar or underscore. Those are the only nonletter characters that are allowed as identifiers
    eval("let " + character + ";");
    let regExSpecial = /[^\$_]/;
    return regExSpecial.test(character);
  } catch (error) {
    return false;
  }
}

console.log(testForLetter("!")); //returns false;
console.log(testForLetter("5")); //returns false;
console.log(testForLetter("ن")); //returns true;
console.log(testForLetter("_")); //returns false;


यदि आपका परीक्षण अंडरस्कोर के लिए सही है, तो यह उपयोगी नहीं है।
Jérôme Verstrynge

यह कोड इंजेक्शन के संभावित सुरक्षा खतरे का परिचय देता है। केवल देखभाल के साथ उपयोग करें, अगर बिल्कुल भी।
माइकल श्मिट

0

यह पता करना संभव है कि क्या चरित्र एक अक्षर है या नहीं, एक मानक बिलिन फ़ंक्शन का उपयोग करके है या नहीं ESN से NNN या Number.isNaN () :

isNaN('s') // true
isNaN('-') // true
isNaN('32') // false, '32' is converted to the number 32 which is not NaN

यह सही है अगर दिया गया मान एक संख्या नहीं है, अन्यथा गलत है।


चतुर, लेकिन मुझे यकीन नहीं है कि यह एक पर्याप्त जवाब है ... इसके अलावा, मार्क ने टिप्पणियों में यह सुझाव दिया ...
गैरेट मोत्ज़नेर

var sn = "स्ट्रिंग इंडिफ़ &"; var nn = isNaN (sn) document.getElementById ("डेमो"); भीतर HTML = nn; मैं संख्याएं पार कर रहा हूं या विशेष पात्र अभी भी सही हैं। क्या आप कृपया अधिक विवरण उत्तर जोड़ सकते हैं
श्री एस कोडर

एक पत्र किस “वर्णमाला” में है?
माइकल श्मिट

-1
// to check if the given string contain alphabets    
function isPangram(sentence){
        let lowerCased = sentence.toLowerCase();
        let letters = "abcdefghijklmnopqrstuvwxyz";
        // traditional for loop can also be used
        for (let char of letters){
            if (!lowerCased.includes(char)) return false;
        }
        return true;
    }

1
यूनिकोड में वर्तमान में 135 अल्फ़ाबेट्स को कवर करने वाले 128 000 वर्ण हैं। वे 26 उनमें से एक बहुत छोटे उपसमुच्चय हैं।
माइकल श्मिट

-1

मैंने ऐसा करने के लिए एक समारोह बनाया:

var isLetter = function (character) {
  if( (character.charCodeAt() >= 65 && character.charCodeAt() <= 90) || (character.charCodeAt() >= 97 && character.charCodeAt() <= 122) ) {
    return true;
  }
  else{
    return false;
  }
}

यह मूल रूप से ASCII तालिका में पुष्टि करता है यदि वर्ण का कोड एक पत्र को संदर्भित करता है।

आप इस लिंक पर ASCII तालिका देख सकते हैं और कॉलम DEC (जहां कोड है) और प्रतीक की तुलना करें : https://www.ascii-code.com/

नोट: मेरा फ़ंक्शन केवल "सरल" अक्षरों (",", "é", "ç", "" "जैसी चीजों के लिए सही है) यह गलत वापस आ जाएगा ... लेकिन अगर आपको ज़रूरत है तो आप इस फ़ंक्शन को अन्य स्थितियों के लिए अनुकूलित कर सकते हैं )।


-1

इसलिए हमें charArt()फ़ंक्शन का उपयोग करके एक पहला वर्ण मिला, फिर नियमित अभिव्यक्ति का उपयोग करके आईआर से मिलान करने का प्रयास करें कि क्या कोई पत्र ए से जेड तक शुरू हो रहा है और इसे एक परिणाम के रूप में वापस करना हैboolean

Boolean('#Foo'.charAt(0).match(/[a-zA-Z]/)) // false
Boolean('Foo'.charAt(0).match(/[a-zA-Z]/)) // true

क्या आप संहिता की संक्षिप्त व्याख्या या विवरण प्रदान कर सकते हैं? कोड केवल उत्तर हतोत्साहित करते हैं।
Nimantha

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.