存储多个真假值列表的最佳方式
Best way to store multiple lists of true false values
这只是为了解决好奇心 - 假设在我的 C# 项目中,我有一个包含数百万个字符串的列表,每个字符串如下所示:
"123Hi1234Howdy"
"Hi1Howdy23"
....
我只需要知道,对于字符串中的每个字符,它是数字还是字母。
所以,我认为最简单的存储方式是将其存储为 0 和 1 或 True / False。因此,在上面的示例中,假设我可以分配 IsLetter = 1
和 IsDigit = 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();
}
这不一定是最快或最有效的。我想这取决于你打算用字符串做什么,但至少它很简单!
这只是为了解决好奇心 - 假设在我的 C# 项目中,我有一个包含数百万个字符串的列表,每个字符串如下所示:
"123Hi1234Howdy"
"Hi1Howdy23"
....
我只需要知道,对于字符串中的每个字符,它是数字还是字母。
所以,我认为最简单的存储方式是将其存储为 0 和 1 或 True / False。因此,在上面的示例中,假设我可以分配 IsLetter = 1
和 IsDigit = 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();
}
这不一定是最快或最有效的。我想这取决于你打算用字符串做什么,但至少它很简单!