इनपुट में नंबर सॉर्ट करने के लिए कैसे:अक्षरांकीय
SHC 111U, SHB 22x ,, SHA 5555G
जरूरत उत्पादन:
SHB 22X, SHC 111U, SHA 5555G
मुझे पार्किंग क्षेत्र में केवल Vehicle no
क्रमबद्ध करना है pref ix और प्रत्यय पत्र
इनपुट में नंबर सॉर्ट करने के लिए कैसे:अक्षरांकीय
SHC 111U, SHB 22x ,, SHA 5555G
जरूरत उत्पादन:
SHB 22X, SHC 111U, SHA 5555G
मुझे पार्किंग क्षेत्र में केवल Vehicle no
क्रमबद्ध करना है pref ix और प्रत्यय पत्र
बढ़िया, अच्छी तरह से अनुकूलित खुला स्रोत समाधान http://dotnetperls.com/alphanumeric-sorting
ऐसा करने के लिए अंतर्निहित कुछ भी नहीं है, लेकिन आप इसे पहले संख्याओं और सॉर्टिंग को निकालने के द्वारा कर सकते हैं। उदाहरण के लिए:
class VehicleNumberComparer : IComparer<string>
{
public int Compare(string lhs, string rhs)
{
var numExtract = new Regex("[0-9]+");
int lhsNumber = int.Parse(numExtract.Match(lhs).Value);
int rhsNumber = int.Parse(numExtract.Match(rhs).Value);
return lhsNumber.CompareTo(rhsNumber);
}
}
यह वह जगह है अपरीक्षित (और शायद भी संशोधन के बिना संकलन नहीं होगा), कोई त्रुटि जाँच की है, और शायद दुनिया में सबसे तेजी तरीका नहीं है, लेकिन आप एक विचार देना चाहिए।
यह करने के लिए इस
की तरह कुछ करने के लिए एक रेगुलर एक्सप्रेशन लिखें नाम का सिर्फ अंकीय भाग से मिलान करने के लिए किया जाएगा एक अच्छा तरीका, डाल कि बनती पूर्णांक मूल्यों का एक संग्रह में, पहले नंबर किया जा रहा है आपने अपनी स्ट्रिंग से खींचा और दूसरा मूल सूची में संख्या का सूचकांक है। फिर दूसरी सूची को सॉर्ट करें, और फिर अपने संग्रह में दूसरे नंबर का उपयोग करके पहली सूची को पुन: व्यवस्थित करें।
धन्यवाद, मैं – drop
एक सॉर्ट विधि का उपयोग करें जो IComparer ऑब्जेक्ट स्वीकार करता है और इसे वाहन संख्याओं का संग्रह पास करता है। आपको एक कस्टम क्लास को परिभाषित करने की आवश्यकता होगी जो आईसीओएमपेयर लागू करता है। उस वर्ग की तुलना विधि में आप दो वाहन संख्याओं की तुलना करने के लिए कोड लिख सकते हैं। वाहन संख्या के संख्यात्मक भाग को निकालने के लिए आपको शायद रेगेक्स का उपयोग करना चाहिए।
धन्यवाद कर सकता हूं धन्यवाद, आपकी सहायता – drop
यदि कोई संख्या के बिना प्लेट रखना संभव है तो आपको इसकी जांच करनी चाहिए।
static int SortPlate(string plate)
{
int plateNumber;
Regex regex = new Regex(@"\d+");
Int32.TryParse(regex.Match(plate).Value, out plateNumber);
return plateNumber;
}
static void Main(string[] args)
{
IEnumerable<string> data = new List<string>() {"SHC 111U", "SHB 22x", "SHA 5555G", "HOT STUFF"};
var sortedList = from z in data
orderby SortPlate(z)
select z;
foreach (string plate in sortedList)
{
Console.WriteLine(plate);
}
}
यदि यह बिल्कुल असंभव है और दुनिया के अंत से पहले आएगा वहाँ कभी संख्या के बिना एक थाली हो सकता है तो यह संक्षिप्त रूप से काम करेगा:
static void Main(string[] args)
{
IEnumerable<string> data = new List<string>() {"SHC 111U", "SHB 22x", "SHA 5555G"};
Regex regex = new Regex(@"\d+");
var sortedList = from z in data
orderby Int32.Parse(regex.Match(z).Value)
select z;
foreach (string plate in sortedList)
{
Console.WriteLine(plate);
}
}
अच्छे संदर्भ आलेख के लिए धन्यवाद – drop