繁体   English   中英

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

[英]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();


}

这不一定是最快或最有效的。 我想这取决于您打算如何处理字符串,但至少很简单!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM