একটি সম্পূর্ণ ইউসিএ সমাধান
পার্ল লাইব্রেরি মডিউল, ইউনিকোড :: কোলেট :: লোকালে , যা স্ট্যান্ডার্ড ইউনিকোড :: কোলেট মডিউলটির একটি সাবক্লাস, এটি কলআউট করার জন্য এটি করার সবচেয়ে সহজ, সহজ ও সহজ উপায় । আপনার যা যা করা দরকার তা হ'ল নির্ধারককে "xv"
সুইডেনের একটি স্থানীয় মান pass
(আপনি সম্ভবত সুইডিশ পাঠ্যের জন্য এটি প্রশংসা করতে পারবেন না, তবে পার্ল বিমূর্ত অক্ষর ব্যবহার করেছেন বলে আপনি যে কোনও ইউনিকোড কোড পয়েন্ট ব্যবহার করতে পারেন দয়া করে - প্ল্যাটফর্ম বা বিল্ডিং কোনও ব্যাপার নয়) কয়েকটি ভাষা এই জাতীয় সুবিধা সরবরাহ করে I আমি এটি উল্লেখ করেছি কারণ আমি লড়াই করেছি ইদানীং এই ক্ষিপ্ত সমস্যা নিয়ে জাভার সাথে যুদ্ধ হারাতে)
সমস্যাটি হ'ল পাইথন থেকে পার্ল মডিউলটি কীভাবে অ্যাক্সেস করতে হয় তা আমি জানি না - আলাদাভাবে, শেল কলআউট বা দ্বি-পার্শ্বযুক্ত পাইপ ব্যবহার করা থেকে। সেই লক্ষ্যে, আমি আপনাকে ucsort নামক একটি সম্পূর্ণ কার্যনির্বাহী স্ক্রিপ্ট সরবরাহ করেছি যা আপনি নিখুঁত স্বাচ্ছন্দ্যে যা চেয়েছিলেন ঠিক তা করতে কল করতে পারেন।
এই স্ক্রিপ্টটি সম্পূর্ণ ইউনিকোড কলেশন অ্যালগরিদমের সাথে 100% মেনে চলছে , সমস্ত টেইলারিং বিকল্পগুলি সমর্থন করে !! এবং যদি আপনার একটি alচ্ছিক মডিউল ইনস্টল থাকে বা পার্ল 5.13 বা ততোধিক উন্নত হয়, তবে আপনার কাছে সহজেই ব্যবহারযোগ্য সিএলডিআর লোকালগুলিতে সম্পূর্ণ অ্যাক্সেস রয়েছে। নিচে দেখ.
প্রদর্শন
একটি ইনপুট সেটটি এভাবে অর্ডার করা কল্পনা করুন:
b o i j n l m å y e v s k h d f g t ö r x p z a ä c u q
কোড পয়েন্ট ফলন দ্বারা একটি ডিফল্ট সাজানো:
a b c d e f g h i j k l m n o p q r s t u v x y z ä å ö
যা প্রত্যেকের বই দ্বারা ভুল। আমার স্ক্রিপ্টটি, যা ইউনিকোড কলেশন অ্যালগরিদম ব্যবহার করে আপনি এই অর্ডারটি পেয়েছেন:
% perl ucsort /tmp/swedish_alphabet | fmt
a å ä b c d e f g h i j k l m n o ö p q r s t u v x y z
এটি ডিফল্ট ইউসিএ বাছাই। সুইডিশ লোকেল পেতে, ucsort এইভাবে কল করুন :
% perl ucsort --locale=sv /tmp/swedish_alphabet | fmt
a b c d e f g h i j k l m n o p q r s t u v x y z å ä ö
এখানে আরও ভাল ইনপুট ডেমো রয়েছে। প্রথমত, ইনপুট সেট:
% fmt /tmp/swedish_set
cTD cDD Cöd Cbd cAD cCD cYD Cud cZD Cod cBD Cnd cQD cFD Ced Cfd cOD
cLD cXD Cid Cpd cID Cgd cVD cMD cÅD cGD Cqd Cäd cJD Cdd Ckd cÖD cÄD
Ctd Czd Cxd cHD cND cKD Cvd Chd Cyd cUD Cld Cmd cED Crd Cad Cåd Ccd
cRD cSD Csd Cjd cPD
কোড পয়েন্ট অনুসারে, এটি এইভাবে বাছাই করে:
Cad Cbd Ccd Cdd Ced Cfd Cgd Chd Cid Cjd Ckd Cld Cmd Cnd Cod Cpd Cqd
Crd Csd Ctd Cud Cvd Cxd Cyd Czd Cäd Cåd Cöd cAD cBD cCD cDD cED cFD
cGD cHD cID cJD cKD cLD cMD cND cOD cPD cQD cRD cSD cTD cUD cVD cXD
cYD cZD cÄD cÅD cÖD
তবে ডিফল্ট ইউসিএ ব্যবহার করে এটি এইভাবে সাজিয়ে তোলে:
% ucsort /tmp/swedish_set | fmt
cAD Cad cÅD Cåd cÄD Cäd cBD Cbd cCD Ccd cDD Cdd cED Ced cFD Cfd cGD
Cgd cHD Chd cID Cid cJD Cjd cKD Ckd cLD Cld cMD Cmd cND Cnd cOD Cod
cÖD Cöd cPD Cpd cQD Cqd cRD Crd cSD Csd cTD Ctd cUD Cud cVD Cvd cXD
Cxd cYD Cyd cZD Czd
তবে সুইডিশ লোকালে, এইভাবে:
% ucsort --locale=sv /tmp/swedish_set | fmt
cAD Cad cBD Cbd cCD Ccd cDD Cdd cED Ced cFD Cfd cGD Cgd cHD Chd cID
Cid cJD Cjd cKD Ckd cLD Cld cMD Cmd cND Cnd cOD Cod cPD Cpd cQD Cqd
cRD Crd cSD Csd cTD Ctd cUD Cud cVD Cvd cXD Cxd cYD Cyd cZD Czd cÅD
Cåd cÄD Cäd cÖD Cöd
আপনি যদি ছোট হাতের আগে বড় হাতের বাছাই করতে পছন্দ করেন তবে এটি করুন:
% ucsort --upper-before-lower --locale=sv /tmp/swedish_set | fmt
Cad cAD Cbd cBD Ccd cCD Cdd cDD Ced cED Cfd cFD Cgd cGD Chd cHD Cid
cID Cjd cJD Ckd cKD Cld cLD Cmd cMD Cnd cND Cod cOD Cpd cPD Cqd cQD
Crd cRD Csd cSD Ctd cTD Cud cUD Cvd cVD Cxd cXD Cyd cYD Czd cZD Cåd
cÅD Cäd cÄD Cöd cÖD
নিজস্ব নকশা
আপনি ইউএসকোর্টের সাহায্যে আরও অনেক কিছু করতে পারেন । উদাহরণস্বরূপ, ইংরেজিতে শিরোনাম কীভাবে সাজানো যায় তা এখানে:
% ucsort --preprocess='s/^(an?|the)\s+//i' /tmp/titles
Anathem
The Book of Skulls
A Civil Campaign
The Claw of the Conciliator
The Demolished Man
Dune
An Early Dawn
The Faded Sun: Kesrith
The Fall of Hyperion
A Feast for Crows
Flowers for Algernon
The Forbidden Tower
Foundation and Empire
Foundation’s Edge
The Goblin Reservation
The High Crusade
Jack of Shadows
The Man in the High Castle
The Ringworld Engineers
The Robots of Dawn
A Storm of Swords
Stranger in a Strange Land
There Will Be Time
The White Dragon
সাধারণভাবে স্ক্রিপ্টটি চালানোর জন্য আপনার পার্লের 5.10.1 বা আরও ভাল প্রয়োজন। স্থানীয় সহায়তার জন্য আপনাকে অবশ্যই CPচ্ছিক সিপিএএন মডিউলটি ইনস্টল করতে হবে Unicode::Collate::Locale
। পর্যায়ক্রমে, আপনি পার্ল, 5.13+ এর বিকাশ সংস্করণ ইনস্টল করতে পারেন, এতে স্ট্যান্ডার্ডভাবে মডিউলটি অন্তর্ভুক্ত থাকে।
সম্মেলন আহ্বান
এটি একটি দ্রুত প্রোটোটাইপ, সুতরাং ucsort বেশিরভাগই আন (ডার) নথিভুক্ত। তবে এটি কমান্ড লাইনে কী স্যুইচ / অপশনগুলি গ্রহণ করবে তার এটির সিনপসিস:
--help|?
--man|m
--debug|d
--backwards-levels=i
--collation-level|level|l=i
--katakana-before-hiragana
--normalization|n=s
--override-CJK=s
--override-Hangul=s
--preprocess|P=s
--upper-before-lower|u
--variable=s
--case-insensitive|insensitive|i
--input-encoding|e=s
--locale|L=s
--paragraph|p
--reverse-fields|last
--reverse-output|r
--right-to-left|reverse-input
হ্যাঁ, ঠিক আছে: এটি সত্যিই যুক্তি তালিকার জন্য আমি কল করার জন্য ব্যবহার করি Getopt::Long
তবে আপনি ধারণাটি পেতে পারেন। :)
পার্ল স্ক্রিপ্ট কল না করে পাইথন থেকে পার্ল লাইব্রেরি মডিউলগুলিকে কীভাবে কল করা যায় তা যদি আপনি নির্ণয় করতে পারেন তবে সর্বদা এটি করুন। আমি নিজেকে জানি না। আমি কিভাবে শিখতে চাই।
ইতিমধ্যে, আমি বিশ্বাস করি যে এই স্ক্রিপ্টটি এর সমস্ত বিশেষে আপনার যা করা দরকার তা করবে - এবং আরও অনেক কিছু! আমি এখন এটি সমস্ত পাঠ্য বাছাইয়ের জন্য ব্যবহার করি। এটি পরিশেষে যা আমার দীর্ঘ, দীর্ঘ সময়ের জন্য প্রয়োজন ছিল তা করে।
কেবলমাত্র খারাপ দিকটি হ'ল --locale
যুক্তি টিউবগুলিকে নীচে নেমে যাওয়ার জন্য পারফরম্যান্স তৈরি করে, যদিও এটি নিয়মিত, অ-স্থানীয় নয় তবে এখনও 100% ইউসিএ অনুসারে বাছাইয়ের জন্য যথেষ্ট যথেষ্ট দ্রুত । যেহেতু এটি মেমরিতে সমস্ত কিছু লোড করে, আপনি সম্ভবত এটি গিগা বাইট নথিতে ব্যবহার করতে চান না। আমি এটি দিনে অনেকবার ব্যবহার করি এবং এটি নিশ্চিত যে এটি শেষ পর্যন্ত বুদ্ধিমান পাঠ্য বাছাই করে।