[英]Best way to index boolean values. Skip false and use MUST_NOT be true?
[英]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();
}
這不一定是最快或最有效的。 我想這取決於您打算如何處理字符串,但至少很簡單!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.