উত্তর:
আপনার কাছে System.Data.Entity.Design.PluraizationServices.PluraizationService রয়েছে ।
আপডেট : পুরানো উত্তর আপডেটের দাবি রাখে। হিউম্যানাইজার এখন রয়েছে: https://github.com/MehdiK/Humanizer
আমি এটি কোনও বিশেষ ক্ষেত্রে ছাড়াই এস্পেরান্তোর জন্য করতে পারি!
string plural(string noun) { return noun + "j"; }
ইংরেজি, এটি জন্য নিয়ম পরিচিত হয়ে দরকারী হবে বিশেষ্যের নিয়মিত বহুবচন গুলো , সেইসাথে বিশেষ্যের অনিয়মিত বহুবচন গুলো । ইংলিশ বহুবচন সম্পর্কে একটি সম্পূর্ণ উইকিপিডিয়া নিবন্ধ রয়েছে , যার কিছু সহায়ক তথ্যও থাকতে পারে।
বেশিরভাগ ওআরএম এর এতে ছুরিকাঘাত থাকে, যদিও তারা সাধারণত নিখুঁত হয় না। আমি জানি ক্যাসলের রয়েছে ইফ্লেক্টর ক্লাস, আপনি সম্ভবত আশপাশ করতে পারেন। এটি "নিখুঁতভাবে" করা সহজ কাজ নয় যদিও (ইংরেজি "নিয়ম" আসলে নিয়ম নয় :)), সুতরাং এটি নির্ভর করে যদি আপনি "যুক্তিসঙ্গত অনুমান" পদ্ধতির সাথে খুশি হন।
আমি জাভাতে প্রতারণা করেছি - "আমি সেখানে কিছু ছিল" এর জন্য একটি সঠিক স্ট্রিং তৈরি করতে সক্ষম হতে চাই, তাই ফলসটি লিখেছিলাম। সামান্য ওভারলোড হওয়া ইউটিলিটি পদ্ধতি:
static public String pluralize(int val, String sng) {
return pluralize(val,sng,(sng+"s"));
}
static public String pluralize(int val, String sng, String plu) {
return (val+" "+(val==1 ? sng : plu));
}
অনুরোধ করা হয়েছে
System.out.println("There were "+pluralize(count,"something"));
System.out.println("You have broken "+pluralize(count,"knife","knives"));
আমি এর জন্য একটি নেট লাইব্রেরি তৈরি করেছি। নেট (সি #), যাকে বহুবচনকারী (আশ্চর্যজনকভাবে) বলা হয়।
এটি সম্পূর্ণ বাক্যগুলির সাথে কাজ করা বোঝায়, স্ট্রিংয়ের মতো কিছু For ফর্ম্যাট করে।
এটি মূলত এটির মতো কাজ করে:
var target = new Pluralizer();
var str = "There {is} {_} {person}.";
var single = target.Pluralize(str, 1);
Assert.AreEqual("There is 1 person.", single);
// Or use the singleton if you're feeling dirty:
var several = Pluralizer.Instance.Pluralize(str, 47);
Assert.AreEqual("There are 47 people.", several);
এটি এর চেয়ে আরও বেশি কিছু করতে পারে। আমার ব্লগে এটি সম্পর্কে আরও পড়ুন । এটি নুগেটেও উপলব্ধ।
আমি একসাথে বেত্রাঘাতের বহুবচনের উপর ভিত্তি করে বেত্রাঘাত করেছি। আপনি আমার ব্লগ পোস্টটি এখানে , বা গিথুব এ দেখতে পারেন
output = Formatting.Pluralization(100, "sausage");
যেহেতু প্রশ্নটি সি # এর ছিল, সফ্টওয়্যার বানরের সমাধানের জন্য এখানে একটি দুর্দান্ত পার্থক্য রয়েছে (আবার কিছুটা "প্রতারণা" হলেও আমার পক্ষে এটি করার সবচেয়ে বাস্তব এবং পুনরায় ব্যবহারযোগ্য উপায়):
public static string Pluralize(this string singularForm, int howMany)
{
return singularForm.Pluralize(howMany, singularForm + "s");
}
public static string Pluralize(this string singularForm, int howMany, string pluralForm)
{
return howMany == 1 ? singularForm : pluralForm;
}
ব্যবহার নিম্নলিখিত:
"Item".Pluralize(1) = "Item"
"Item".Pluralize(2) = "Items"
"Person".Pluralize(1, "People") = "Person"
"Person".Pluralize(2, "People") = "People"
সাবসোনিক 3 এর একটি Inflectorশ্রেণি রয়েছে যা আমাকে পরিণত Personকরে মুগ্ধ করেছিলPeople । আমি উত্সটিতে উঁকি মেরে দেখেছি যে এটি একটি হার্ডকোডযুক্ত তালিকার সাথে স্বাভাবিকভাবেই কিছুটা প্রতারণা করে তবে ইংরেজিতে এটি করার একমাত্র উপায় এবং মানুষ কীভাবে তা করে - আমরা প্রতিটি শব্দের একবচন এবং বহুবচন মনে রাখি এবং কেবল কোনও নিয়ম প্রয়োগ করি না । পুংলিঙ্গ / মেয়েলি (/ নিরপেক্ষ) মিশ্রণটি যুক্ত করার জন্য এটি অনেক সহজ it's
এখানে একটি স্নিপেট রয়েছে:
AddSingularRule("^(ox)en", "$1");
AddSingularRule("(vert|ind)ices$", "$1ex");
AddSingularRule("(matr)ices$", "$1ix");
AddSingularRule("(quiz)zes$", "$1");
AddIrregularRule("person", "people");
AddIrregularRule("man", "men");
AddIrregularRule("child", "children");
AddIrregularRule("sex", "sexes");
AddIrregularRule("tax", "taxes");
AddIrregularRule("move", "moves");
AddUnknownCountRule("equipment");
এটি সরঞ্জামের উদাহরণের মতো কিছু শব্দের বহুবচন সমতুল্য না হিসাবে অ্যাকাউন্ট করে। আপনি সম্ভবত বলতে পারেন এটি একটি সহজ করে তোলেRegex 1 ব্যবহার প্রতিস্থাপন করে।
আপডেট করুন:
মনে হচ্ছে শব্দ অপেক্ষা ধীরগামী এর InflectorInfact হয় কাসল ActiveRecordInflector বর্গ!
বহুবচনকরণ পরিষেবা শ্রেণীর নির্দিষ্ট ব্যবহারের বিষয়ে এমএসডিএন থেকে খুব বেশি ডকুমেন্টেশন নেই তাই বেসিক ব্যবহারগুলি দেখানোর জন্য এখানে একটি ইউনিট পরীক্ষার শ্রেণি (নুনিট) রয়েছে। নীচে অদ্ভুত পরীক্ষার কেসটি লক্ষ্য করুন যা দেখায় যে এটি মানহীন বহুবচন রূপগুলির ক্ষেত্রে পরিষেবাটি নিখুঁত নয়।
[TestFixture]
public class PluralizationServiceTests
{
[Test]
public void Test01()
{
var service = PluralizationService.CreateService(CultureInfo.CurrentCulture);
Assert.AreEqual("tigers", service.Pluralize("tiger"));
Assert.AreEqual("processes", service.Pluralize("process"));
Assert.AreEqual("fungi", service.Pluralize("fungus"));
Assert.AreNotEqual("syllabi", service.Pluralize("syllabus")); // wrong pluralization
}
}
এই পৃষ্ঠাটি শো কিভাবে ব্যবহার করতে PluralizationServiceএরSystem.Data.Entity (.NET ফ্রেমওয়ার্ক 4.0)
http://zquanghoangz.blogspot.it/2012/02/beginner-with-pluralizationservices.html
মাইক্রোসফ্টের নর্থ উইন্ড উদাহরণ উদাহরণস্বরূপ:
System.Data.Entity.Design.PluralizationServices.PluralizationService.CreateService(new System.Globalization.CultureInfo("en-US"));
সিঙ্গুলারিজ "অর্ডার_ডিটেলস" সিঙ্গুলারিজ করে না sএটি শেষে "অর্ডার_ডিটেলস" প্রদান করে । আশেপাশে কী কাজ?