簡體   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