Best way to store multiple lists of true false values

南楼画角 提交于 2020-01-16 05:18:37

问题


This is just to settle a curiosity - Suppose, in my C# project, I have a list containing millions of strings, each along the following lines:

"123Hi1234Howdy"
"Hi1Howdy23"
....

And all I need to know is, for each character in the string, if it is a digit or is it a letter.

So, I was thinking the easiest way to store this would be as 0's and 1's or True / False. So, in the example above, assuming I could assign IsLetter = 1 and IsDigit = 0, I could transform each line to:

"123Hi1234Howdy"  >> 00011000011111
"Hi1Howdy23"      >> 1101111100
....

That seems to me to be the most efficient way to store the data I'm looking for (but please do already correct me if I'm wrong on this - I'm still pretty much a newbie with programming).

So, writing the code that loops through a line and checks for whether each character is a digit or a letter and converting it to true/false or 1/0 is easy enough. My question is what would be the best way to store each line's output?

Should I store each line's output as a bit array? Could it be stored as some other type (maybe, say, integer) that could then be converted back to a series of bits? Should it be stored as a boolean array? Any other thoughts on the best way to store this? When it's all said and done, I need to have a list where I can know, for example:

myList[0] = 00011000011111
myList[1] = 1101111100

And, then, therefore myList[0] <> myList[1]


回答1:


You could use a BitArray for each word and set the bits to true or false if they are a digit or not. See this possible solution:

void Main()
{
    string[] words = 
    {
        "123Hi1234Howdy", 
        "Hi1Howdy23"
    };

    //Create an array of BitArray
    var bArrays = words.Select(w => new BitArray(w.Select(c => char.IsDigit(c)).ToArray()));

    //You can also create string too
    var strings = words.Select(w => new string(w.Select(c => char.IsDigit(c) ? '1' : '0').ToArray())).ToArray();


}

This is not necessarily the fastest or most efficient. I guess it depends on what you intend to do with the strings, but at least it's simple!



来源:https://stackoverflow.com/questions/36013006/best-way-to-store-multiple-lists-of-true-false-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!