存储多个真假值列表的最佳方式

Best way to store multiple lists of true false values

这只是为了解决好奇心 - 假设在我的 C# 项目中,我有一个包含数百万个字符串的列表,每个字符串如下所示:

"123Hi1234Howdy"
"Hi1Howdy23"
....

我只需要知道,对于字符串中的每个字符,它是数字还是字母。

所以,我认为最简单的存储方式是将其存储为 0 和 1 或 True / False。因此,在上面的示例中,假设我可以分配 IsLetter = 1IsDigit = 0,我可以将每一行转换为:

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

在我看来 是存储我正在寻找的数据的最有效方式(但如果我错了,请纠正我 - 我我仍然是编程方面的新手)。

因此,编写循环遍历一行并检查每个字符是数字还是字母并将其转换为 true/false 或 1/0 的代码就足够容易了。我的问题是存储每行输出的最佳方式是什么?

我应该将每一行的输出存储为位数组吗?它可以存储为某种其他类型(例如,整数),然后可以将其转换回一系列位吗?它应该存储为布尔数组吗? 关于最佳存储方式的任何其他想法?当一切都说完了,我需要一个列表,我可以知道,例如:

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

然后,因此myList[0] <> myList[1]

您可以为每个单词使用 BitArray,并将这些位设置为 true 或 false(无论它们是否为数字)。查看此可能的解决方案:

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();


}

这不一定是最快或最有效的。我想这取决于你打算用字符串做什么,但至少它很简单!