java - अपाचे कॉमन्स २ १२३ ’न्यूमेरिक क्यों मानते हैं?




unicode number-systems (4)

StringUtils.isNumeric() लिए Apache Commons Lang के दस्तावेज़ के अनुसार, स्ट्रिंग '1223' संख्यात्मक है।

चूंकि मुझे विश्वास था कि यह प्रलेखन में गलती हो सकती है, इसलिए मैंने बयान को सत्यापित करने के लिए परीक्षण चलाए। मैंने पाया कि अपाचे कॉमन्स के अनुसार यह संख्यात्मक है।

यह स्ट्रिंग न्यूमेरिक क्यों है? वे चरित्र क्या दर्शाते हैं?


क्योंकि उस "CharSequence में केवल यूनिकोड अंक होते हैं" (आपके StringUtils.isNumeric() उद्धृत करते हुए)।

चरित्र के सभी अक्षर के लिए सही वापस आते हैं।

कुछ यूनिकोड वर्ण श्रेणियाँ जिनमें अंक होते हैं:

  • '\ u0030' '\ u0039' के माध्यम से, ISO-LATIN-1 अंक ('0' '9') के माध्यम से
  • '\ u0669', अरबी-इंडिक अंकों के माध्यम से '\ u0660'
  • '\ u06F9' के माध्यम से '\ u06F9', विस्तारित अरबी-इंडिक अंक
  • देवनागरी अंकों के माध्यम से '\ u0966'
  • '\ uFF10' 'पूर्णांक अंकों' के माध्यम से

कई अन्य वर्ण श्रेणियों में भी अंक होते हैं।

१२३ देवनागरी अंक हैं:


चरित्र की सामान्य श्रेणी की जाँच करने के लिए आप Character#getType का उपयोग कर सकते हैं:

System.out.println(Character.DECIMAL_DIGIT_NUMBER == Character.getType('१'));

यह true , जो एक "प्रमाण" है कि '1' एक अंक संख्या है

अब '1' वर्ण के यूनिकोड मान की जांच करते हैं:

System.out.println(Integer.toHexString('१'));
// 967

यह संख्या देवनागरी अंकों की सीमा पर है - जो है: \u0966 माध्यम से।

भी आज़माएं:

Character.UnicodeBlock block = Character.UnicodeBlock.of('१');
System.out.println(block.toString());
// DEVANAGARI

देवनागरी है:

भारत और नेपाल की एक अबुगिदा (अल्फासिलरी) वर्णमाला है

"१२३" एक "१२३" (बेसिक लैटिन यूनिकोड) है।

पढ़ना:


प्रतीक '१२३' वास्तव में हिंदी भाषा (मूल रूप से संस्कृत भाषा यानी देवनागिरी) से लिए गए हैं, जो संख्यात्मक मानों का प्रतिनिधित्व करते हैं:

1 का प्रतिनिधित्व करते हैं

२ प्रतिनिधित्व २

और बुद्धिमान की तरह


यदि आप कभी जानना चाहते हैं कि किसी विशेष "चरित्र" में क्या गुण हैं (और काफी कुछ हैं), तो सीधे स्रोत पर जाएं: Unwode.org । उनके पास अनुसंधान उपकरण हैं जो आपको सबसे ज्यादा कुछ दिखा सकते हैं जिन्हें आप जानना चाहते हैं।

  • यदि आप किसी विशिष्ट वर्ण के सभी गुण देखना चाहते हैं, तो निम्न प्रयास करें:

    http://unicode.org/cldr/utility/character.jsp?a=१

    या:

    http://unicode.org/cldr/utility/character.jsp?a=१

  • यदि आप सभी वर्णों को "दशमलव अंकों" के रूप में वर्गीकृत करते देखना चाहते हैं (यानी 9 के माध्यम से 0 की संख्या के साथ), तो निम्न प्रयास करें:

    http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Numeric_Type=Decimal:]
    (550 कोड अंक - वर्तमान में / यूनिकोड 9.0 के रूप में)

  • यदि आप सभी वर्णों को "गैर-दशमलव अंकों की संख्या" के रूप में वर्गीकृत करते हुए देखना चाहते हैं (यानी भिन्न, परिचालित, आदि), तो निम्न प्रयास करें:

    http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Numeric_Type=Numeric:]
    (836 कोड अंक - वर्तमान में / यूनिकोड 9.0 के रूप में)

  • यदि आप सभी वर्णों को "दशमलव अंक" (यानी 9 के माध्यम से 0 के संख्या मान के साथ) के रूप में वर्गीकृत देखना चाहते हैं, लेकिन केवल यूनिकोड 6.0 (जो .NET उपयोग करता है) के माध्यम से , निम्नलिखित प्रयास करें:

    http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Numeric_Type=Decimal:]%26[:Age=6.0:]
    (420 कोड अंक - और नहीं बदलना चाहिए)

  • यदि आप सभी वर्णों को "दशमलव अंक" (अर्थात 9 के माध्यम से 0 के संख्या मान के साथ) के रूप में वर्गीकृत देखना चाहते हैं, लेकिन केवल यूनिकोड 6.0 (जो .NET उपयोग करता है) के माध्यम से, और केवल बेस-बहुभाषी विमान / कोई अनुपूरक वर्ण में नहीं। कोड प्वाइंट 65535 / U + 0xFFFF से ऊपर कुछ भी नहीं) , निम्नलिखित प्रयास करें:

    http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Numeric_Type=Decimal:]%26[:Age=6.0:]%26[:bmp=Yes:]
    (350 कोड अंक - और नहीं बदलना चाहिए)

KEEP IN MIND: यूनिकोड कंसोर्टियम एक विनिर्देशन का उत्पादन करता है, न कि सॉफ्टवेयर का। इसका मतलब यह है कि यह प्रत्येक सॉफ़्टवेयर विक्रेता पर निर्भर है कि वे विनिर्देश को ठीक से लागू कर सकें । तो जैसे HTML, जावास्क्रिप्ट, CSS, SQL, आदि विभिन्न प्लेटफार्मों, भाषाओं, और इसी तरह के बीच भिन्नता है। उदाहरण के लिए, मुझे Microsoft के .NET फ्रेमवर्क में एक बग मिला, जिसके द्वारा लैटिन अक्षरों AZ और az - कोड पॉइंट्स 0x24B6 को 0x24E9 के माध्यम से परिचालित किया गया - ठीक से char.IsLetter = true ( बग रिपोर्ट ) के रूप में पंजीकृत न करें । और यह संबंधित कार्यक्षमता में अप्रत्याशित व्यवहार की ओर जाता है, जैसे कि TextInfo.ToTitleCase() विधि ( यहां बग )।








apache-commons-lang3