क्या किसी को भी "पहले", "दसवां" और "एक सौवां" जैसे शब्दों को उनके अंकीय समकक्ष रूपांतरित करने के तरीके के बारे में पता है?क्या एक सामान्य संख्यात्मक स्ट्रिंग को अपने मिलान करने वाले संख्यात्मक मान में परिवर्तित करने का एक सरल तरीका है?
नमूने: "प्रथम" -> 1, "दूसरी" -> -2, "दसवें" -> 10, "सौवां" -> 100
किसी भी एल्गोरिथ्म पर्याप्त होगा, लेकिन मैं लिख रहा हूँ यह सी # में है।
संपादित
यह बहुत नहीं है और केवल एक समय में एक शब्द के साथ काम करता है लेकिन यह मेरी प्रयोजनों के सूट। शायद कोई इसे सुधार सकता है लेकिन मैं समय से बाहर हूं।
public static int GetNumberFromOrdinalString(string inputString)
{
string[] ordinalNumberWords = { "", "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth", "tenth", "eleventh", "twelfth", "thirteenth", "fourteenth", "fifteenth", "sixteenth", "seventeenth", "eighteenth", "nineteenth", "twentieth" };
string[] ordinalNumberWordsTens = { "", "tenth", "twentieth", "thirtieth", "fortieth", "fiftieth", "sixtieth", "seventieth", "eightieth", "ninetieth" };
string[] ordinalNumberWordsExtended = {"hundredth", "thousandth", "millionth", "billionth" };
if (inputString.IsNullOrEmpty() || inputString.Length < 5 || inputString.Contains(" ")) return 0;
if (ordinalNumberWords.Contains(inputString) || ordinalNumberWordsTens.Contains(inputString))
{
var outputMultiplier = ordinalNumberWords.Contains(inputString) ? 1 : 10;
var arrayToCheck = ordinalNumberWords.Contains(inputString) ? ordinalNumberWords : ordinalNumberWordsTens;
// Use the loop counter to get our output integer.
for (int x = 0; x < arrayToCheck.Count(); x++)
{
if (arrayToCheck[x] == inputString)
{
return x * outputMultiplier;
}
}
}
// Check if the number is one of our extended numbers and return the appropriate value.
if (ordinalNumberWordsExtended.Contains(inputString))
{
return inputString == ordinalNumberWordsExtended[0] ? 100 : inputString == ordinalNumberWordsExtended[1] ? 1000 : inputString == ordinalNumberWordsExtended[2] ? 1000000 : 1000000000;
}
return 0;
}
क्या आपका मतलब है, कुछ ऐसा रूपांतरित करें : '231' से' 1 + 30 + 200'? – Ruel
@Ruel, नहीं, मुझे लगता है कि ओपी का मतलब है 1 -> "पहला", 10 -> "दसवां", 100 -> "एक सौवां" –
आप इसके साथ कितना उच्च जाना चाहते हैं? – BlackICE