यूनिकोड वर्णों के साथ जुड़े विभिन्न गुण होते हैं। इन गुणों को कोड बिंदु से नहीं लिया जा सकता है; आपको एक टेबल की आवश्यकता है जो आपको बताती है कि क्या किसी चरित्र की एक निश्चित संपत्ति है या नहीं।
आप बिडरेक्शनल प्रॉपर्टी "आर" या "एएल" (रैंडल कैट) वाले पात्रों में रुचि रखते हैं।
ए रैंडल कैट चरित्र एक चरित्र है जो अनजाने में दाएं से बाएं दिशात्मकता के साथ है।
D. Bidirectional tables
D.1 Characters with bidirectional property "R" or "AL"
----- Start Table D.1 -----
05BE
05C0
05C3
05D0-05EA
05F0-05F4
061B
061F
0621-063A
0640-064A
066D-066F
0671-06D5
06DD
06E5-06E6
06FA-06FE
0700-070D
0710
0712-072C
0780-07A5
07B1
200F
FB1D
FB1F-FB28
FB2A-FB36
FB38-FB3C
FB3E
FB40-FB41
FB43-FB44
FB46-FBB1
FBD3-FD3D
FD50-FD8F
FD92-FDC7
FDF0-FDFC
FE70-FE74
FE76-FEFC
----- End Table D.1 -----
यहाँ है यूनिकोड 6.0 के रूप में पूरी सूची पाने के लिए कुछ कोड:
यहाँ यूनिकोड 3.2 (RFC 3454 से) के रूप में पूरी सूची है
var url = "http://www.unicode.org/Public/6.0.0/ucd/UnicodeData.txt";
var query = from record in new WebClient().DownloadString(url).Split('\n')
where !string.IsNullOrEmpty(record)
let properties = record.Split(';')
where properties[4] == "R" || properties[4] == "AL"
select int.Parse(properties[0], NumberStyles.AllowHexSpecifier);
foreach (var codepoint in query)
{
Console.WriteLine(codepoint.ToString("X4"));
}
ध्यान दें कि इन मूल्यों यूनिकोड कोड अंक हैं। सी #/.NET में स्ट्रिंग्स यूटीएफ -16 एन्कोडेड हैं और पहले यूनिकोड कोड पॉइंट्स में कनवर्ट करने की आवश्यकता है (Char.ConvertToUtf32 देखें)।
static void IsAnyCharacterRightToLeft(string s)
{
for (var i = 0; i < s.Length; i += char.IsSurrogatePair(s, i) ? 2 : 1)
{
var codepoint = char.ConvertToUtf32(s, i);
if (IsRandALCat(codepoint))
{
return true;
}
}
return false;
}
इसके लिए धन्यवाद !! मैं बस सोच रहा था कि ब्रेंट के दृष्टिकोण के बारे में आप क्या सोचते हैं? –
@ पैट्रिक क्लाउज: रेगेक्स इंजन में स्पष्ट रूप से यूनिकोड गुणों की ऐसी तालिका शामिल है। लेकिन मुझे सभी RandalCat पात्रों के लिए नामित ब्लॉक नहीं दिख रहे हैं। तो यह आपको आवश्यक शुद्धता के स्तर पर निर्भर करता है: यदि अरबी और हिब्रू का पता लगाना और कुछ अन्य पात्र आपके लिए पर्याप्त हैं, तो नियमित अभिव्यक्तियों के लिए जाएं। यदि आपको अस्तित्व में किसी भी रैंडल कैट चरित्र का पता लगाने की आवश्यकता है, तो अपनी खुद की तालिका बनाएं और ऊपर दिखाए गए इनपुट स्ट्रिंग को स्वयं जांचें। – dtb
मैं सोच रहा हूं कि आप ۞ प्रतीक की क्या बात करते हैं, जिसे Google क्रोम और एमएस वर्ड जैसे सॉफ्टवेयर उत्पादों द्वारा दाएं से बाएं माना जाता है, लेकिन यूनिकोड विनिर्देश में रैंडल कैट के रूप में चिह्नित नहीं है। –